Docker Azure 虛擬化 容器

探索Docker Machine 建立虛擬機下達管理指令

2018-04-11
Docker生態系三大工具包括Docker Compose、Docker Machine以及Docker Swarm。上期文章介紹過Docker Compose,本期接著說明Docker Machine的應用。先示範如何在VirtualBox上建立虛擬機,然後介紹怎樣在微軟Azure雲端服務上建立Docker虛擬機。

env 顯示連接到某台虛擬機所需的環境變數,在前面active指令中已經有看到env,若只試著輸入「docker-machine env YOUR_VM」,看看會有哪些資訊,結果如下:


inspect

以json格式輸出指定Docker主機的詳細資訊,其中包含不同驅動器的相關設定值,沿用「docker inspect」的一貫風格。

ip

取得特定Docker主機的IP位址,以便於後續的延伸應用。

kill

直接強制停用虛擬機,有別於stop指令,可能會造成資料或檔案系統的遺失,若非必要,建議還是使用stop指令。

ls

此指令可列出所有Docker虛擬機的資訊,包括虛擬機名稱、目前指向標註(ACTIVE)、驅動器、虛擬機狀態、URL、Swarm狀態說明、Docker版本號、錯誤資訊。

provision

針對特定Docker虛擬機重新配置的相關設定檔,包括重新安裝Docker、產生新的憑證等。

regenerate-certs

重新產生連線所需的TLS憑證,因當雲端虛擬機重新開機後,所配發的外部IP(Public IP)可能會改變,會導致連線出現錯誤,因之前TLS憑證是屬於舊的IP,此時就須要執行此功能。

restart

該指令可將特定Docker虛擬機重新啟動。

rm

將特定Docker主機刪除,相關設定檔亦會刪除,若發生無法刪除,可使用「rm -f」強制刪除本地端資料,再到虛擬平台或雲端服務上刪除虛擬機。

ssh

透過SSH連到Docker主機,是非常好用的功能,當虛擬機需要修改配置時,可以登入處理,像是建置Swarm叢集,亦可串接Shell指令,讓遠端虛擬機直接執行。

scp

將檔案從本地端複製到Docker虛擬機,或從虛擬機到虛擬機,從虛擬機複製到本地端,其中遠端虛擬機的目錄檔案格式為「VM_NAME:/path/to/files」,例如複製遠端虛擬機的檔案,指令如下:


mount

將遠端虛擬機的目錄掛載到本地端,是透過SSHFS方式,故本機端需要安裝sshfs套件,執行指令為「docker-machine mount -u vbox-01:/home/docker/foo foo」,將遠端的「/home/docker/foo」目錄掛載到本地端當下路徑的「foo」目錄。

start

該指令可啟動所指定的Docker虛擬機。

status

該指令可以取得特定Docker主機的目前狀態,包括Running、Paused、Saved、Stopped、Stopping、Starting、Error等。

stop

以正常程序停止所指定的Docker虛擬機,不同於kill是以強制停止方式。

upgrade

將特定的Docker虛擬機升級到最新的Docker Engine版本,如果是Docker Swarm叢集中的伺服器,則建議Docker Engine版本維持相同一致,避免系統出錯。

url

取得特定虛擬機的連接URL,類似ip指令,回傳的資訊還包括tcp和連接埠號。

version

顯示Docker Machine版本或某台Docker主機的Docker Engine版本,直接輸入「docker-machine version」是查看本地端Docker Machine版本編號,如果加上虛擬機名稱,如「docker-machine version azure-docker-vm1」則是顯示遠端Docker主機的Docker Engine版本編號。

help

列出所有指令的簡易說明,若不清楚個別指令的使用,也可以在指令後面加上「--help」來查詢,例如「docker-machine create --help」。

以上就是所有Docker Machine指令的詳細說明,表1則列出所有指令的清單說明。

表1 Docker Machine指令說明

結語

介紹完Docker Machine的使用,接下來就是Docker Swarm,這是Docker官方所推出的容器叢集管理工具,雖然目前Google Kubernetes躍升成為容器管理平台的第一選擇,但Docker Swarm的簡單易用設計,依然吸引不少開源愛好者使用。Docker Machine迅速建立好多台Docker虛擬機,就可透過Swarm串連成一套分散式容器架構,而Google Kubernetes的作者之一Brendan Burns,最近寫了「Designing Distributed Systems」(http://shop.oreilly.com/product/0636920072768.do)這本書討論分散式系統設計的種種要點和模式(Pattern),之後被挖角到微軟從事容器方面研究,所以此書可在微軟網站上免費下載(https://tinyurl.com/ybhuhfr2)。

自從Docker容器技術出現後,建置系統架構的複雜度大幅度降低,目前資訊系統正朝向分散式架構發展,無論是使用Kubernetes或Docker Swarm,容器所包裝的軟體系統,都會逐漸是分散式架構。

<本文作者:鄭淳尹,Docker/Moby.Taipei社群共同發起人,曾任宏碁eDC維運工程師,玉山銀行資訊處專員,現為臺北榮民總醫院資訊工程師,系統維護及開發設計超過15年。開源技術愛好者,陸續在COSCUP開源人年會、Container Summit研討會、台灣微軟開發者大會、群益期貨和永豐金證券等分享資訊技術,並在多間大學資工系擔任Docker容器技術講師。現任微軟MVP,並翻譯審閱多本容器技術書籍。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!