1. 程式人生 > >Docker系列(七):Docker圖形化管理和監控

Docker系列(七):Docker圖形化管理和監控

Docker管理工具之官方三劍客

Docker Machine是什麼鬼

從前 現在
你需要登入主機,按照主機及作業系統特有的安裝以及配置步驟安裝Docker,使其 能執行Docker容器。
Docker Machine的產生簡化了這一過程,讓你可以使用一條命令在你的計算機,公有云 平臺以及私有資料中心建立及管理Docker主機。

Create Docker Machine主要包括三個Create過程。
• 首先是Provider Create(libmachine/provider.go),此函式主要是在當前執行docker-machine命令主機上建立
以machine name命名的資料夾,並將根證書,伺服器證書以及使用者證書拷貝到此資料夾。
• 其次是Driver create(例如drivers/virtualbox/virtualbox.go)用來建立主機,
• 最後是執行Host create(libmachine/host.go)通過SSH安裝並配置Docker。目前在本地環境中使用的是
boot2docker映象,雲端環境使用的是Ubuntu映象。
其實真相是這樣的:自動建立一個虛機並且安裝好設定好Docker Engine

Docker Machine簡化了部署的複雜度,無論是在本機的虛擬機器上還是在公有云平臺,只需要一條命令便可搭 建好Docker主機
• Docker Machine提供了多平臺多Docker主機的集中管理
• Docker Machine 使應用由本地遷移到雲端變得簡單,只需要修改一下環境變數即可和任意Docker主機通訊 部署應用。
為什麼會有Docker Compose
微服務&規模
Openstack Heat
與容器技術同樣受到關注的微服務架構也在潛移默化的改變著應用的部署方式,其提倡將應用分割成一系列細小 的服務,每個服務專注於單一業務功能,服務之間採用輕量級通訊機制相互溝通

Docker Swarm (類似k8s)

在很長的一段時間內,Docker只能在單host上執行,其跨host的部署、執行與管理能力頗受外界詬病。跨host能 力的薄弱,直接導致Docker容器與host的緊耦合,這種情況下,Docker容器的靈活性很難令人滿意,容器的遷移、 分組等都成為很難實現的功能點。Swarm釋出於2014年12月,以管理Docker叢集,並將其抽象為一個虛擬整體 暴露給使用者,其架構以及命令比較簡單。
Swarm作為一個管理Docker叢集的工具,可以單獨部署於 一個節點。
Swarm的具體工作流程:Docker Client傳送請求給Swarm ;Swarm處理請求併發送至相應的Docker Node;Docker Node執行相應的操作並返回響應。
1.執行一個命令去建立一個叢集. 2.執行另一個命令去啟動Swarm.
3.在執行有Docker Engine的每個主機上,執行一個命令與 上面的叢集相連
在某些點, Swarm將可以在主機故障時重排程容器. Swarm可以很好地與第三方容器編配產品和運供應商提供
的編配服務整合,如Mesos
在這裡插入圖片描述


可以看到server和docker node中的tcp是一樣的。存在一個排程的關係

swarm則將一組docker enginge作為一個叢集進行管理,並提供過了lablel,schedule,filter的能力。 其中排程部分,允許使用者定製自己的排程策略。
1.docker run -e “constraint:operationsystem=fedora”
2.docker run -e “constraint:storagedriver=aufs”

Docker Compose是什麼鬼 (類似openstack)

Docker Compose將所管理的容器分為三層,工程(project),服務(service)以及容器(contaienr)。
一個工程當中可包含多個服務,每個服務中定義了容器執行的映象,引數,依賴。一個服務當中可包括多個容 器例項,Docker Compose並沒有解決負載均衡的問題,因此需要藉助其他工具實現服務發現及負載均衡。
Docker Compose中定義構建的映象只存在在一臺Docker Swarm主機上,無法做到多主機共享
在這裡插入圖片描述

Docker管理工具——Tutum(官方收費)

![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20181227085204727.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhdGFpeWFuZ3U=,size_16,color_FFFFFF,t_70 800x200)

Docker管理工具——shipyard(開源、活躍)

所有需要納管的Docker主機,需要讓Docker在TCP上監聽,以便被納管 OPTIONS=-H=unix:///var/run/docker.sock -H=tcp://0.0.0.0:2375
安裝shipyard
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ shipyard/deploy start
執行:
瀏覽器訪問物理機的8080埠:http://192.168.131.134:8080/ 預設使用者名稱密碼:admin/shipyard,,點選Engines標籤頁 新增一個Docker主機(Engine):
在這裡插入圖片描述
填寫Docker 主機的名字、CPU核心數、記憶體數量(單位MB)、以及Labels,比如部署Web的標籤為web,以後 排程容器的時候,會優先排程到相應的標籤。
在這裡插入圖片描述
建立成功後,列表頁面顯示Docker主機的版本資訊:
在這裡插入圖片描述
如果新增失敗,則需要排除是否埠不可訪問,可以用wget/telnet/curl等方式來排查問題,下面截圖是在 另外主機上Telnet Docker 2375埠看是否能連線:
在這裡插入圖片描述
Containers標籤頁顯示了所有的Docker容器,可以按照Engine(主機)排序,目前還沒有分頁和查詢功能。
在這裡插入圖片描述
點選Container標籤頁的Deploy按鈕,可以啟動新的容器:
在這裡插入圖片描述
容器的映象,名稱,環境變數,啟動引數,是否有Volume儲存、是否有埠對映等都可以在介面上定義。啟動成功以後,可以看到列表中新容器的狀態為RUNNING:
在這裡插入圖片描述
點選容器的連結,可以看到容器的細節資訊,如埠、CPU佔用、記憶體佔用、環境變數、重啟策略等,還可以重 啟、停止、銷燬容器或者檢視容器日誌。
在這裡插入圖片描述
如果容器啟動失敗,或者排查問題,則可以檢視容器的日誌資訊:
在這裡插入圖片描述
在這裡插入圖片描述

Docker管理工具——cAdvisor

cAdvisor的監控圖預設1秒重新整理一次,顯示最近一分鐘的實時資料,不顯示匯聚的和歷史資料, 也沒有閥值告警功能,此外它也無法同時監控多個Docker主機,不過由於其簡單方便,並且具備 很好的實時效能監控能力,所以適合特殊情況下的效能監控和問題排查。
google的cAdvisor,免費開源,實施簡單,每個Docker主機上啟動一個容器即可通過Web埠監控,
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro – volume=/var/lib/docker/:/var/lib/docker:ro --publish=8082:8082 --detach=true --name=cadvisor google/cadvisor:latest --port=8082
上述部分引數可能與主機作業系統有關,需要修改,可參照官方文件:https://github.com/google/cadvisor 由於shipyard是在本機8080埠執行,因此上面把cAdvisor改為了8082埠,執行起來後,訪問本機8082埠,可
看到監控介面:
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
顯示了當前活動的容器的磁碟佔用情況
在這裡插入圖片描述