使用 docker-machine 管理 Azure 容器虛擬機(jī)

安裝 docker-machine 請參見該鏈接(https://docs.docker.com/machine/install-machine "https://docs.docker.com/machine/install-machine")本例中,先安裝了 git bash 工具,再通過 git bash 安裝 docker-machine.

第一次運(yùn)行 docker-machine,會在當(dāng)前用戶的用戶目錄里(一般為 C:\Users\)生成 . =docker 的文件夾。該文件夾下的內(nèi)容主要有:

Certs: 初次運(yùn)行 docker-machine 創(chuàng)建VM會自動生成一系列 X509 的證書。在啟動虛擬機(jī)中的 Docker 服務(wù)時,需要使用這些證書;在重置 docker 證書時,會使用這些證書重新生成 docker 證書。

Credentials: 用以保存 docker-machine 登錄到不同平臺的認(rèn)證信息。

Machines: 保存該 docker-machine 能管理的 Docker 虛擬機(jī)的配置信息。每個虛擬機(jī)有一個與其名字一樣的文件夾,其中包括了用戶 ssh 的密鑰和公鑰,json 配置文件和在通過 docker-machine 進(jìn)行 docker 服務(wù)的管理時進(jìn)行身份驗(yàn)證的證書。

Docker-machine 使用不同的驅(qū)動,能與不同的平臺進(jìn)行通信,進(jìn)行docker 虛擬機(jī)及內(nèi)部 Docker 服務(wù)的管理。這里僅介紹 docker-machine 如何管理 Azure 平臺上的資源。

Docker 虛擬機(jī)的管理

創(chuàng)建

Azure 驅(qū)動版本隨著 Docker-machine 的版本一同更新。參見下面鏈接查看最新的 docker-machine 的版本,修復(fù)的往期的 bug,以及支持的新功能等。

https://github.com/docker/machine/releases "https://github.com/docker/machine/releases "

根據(jù) docker-machine 版本的不同,參數(shù)可能不同。參見下面鏈接查看最新的Azure驅(qū)動支持的參數(shù)選項(xiàng)及其默認(rèn)值。

https://docs.docker.com/machine/drivers/azure/ "https://docs.docker.com/machine/drivers/azure/"除了必須指定訂閱號,其他必須參數(shù)都包含了默認(rèn)值;您也可以根據(jù)需求自定義各參數(shù)值。下面是一個示例(使用 docker-machine 0.8.2 ):

復(fù)制

docker-machine.exe create --driver azure \

--azure-subscription-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx" \

--azure-image "Openlogic:CentOS:7.2:latest" \

這里需要指定 docker-machine 支持的 OS 版本,同時也需要在中國版 Azure 中存在。通過 Powershell 查看中國版 Azure 支持的 image,命令為 Get-AzureRmVMImagePublisher;Get-AzureRmVMImageOffer;Get-AzureRmVMImageSku;Version 一般都是 latest。

復(fù)制

--azure-location "China North" \

--azure-resource-group "dockertestrg" \

--azure-size "Standard_A2" \

#Powershell中通過Get-AzureRmVMSize查看支持的虛擬機(jī)尺寸大小。

--azure-vnet "dockervnet" \

--azure-subnet "dockersub" \

--azure-subnet-prefix "192.168.0.0/24" \

--azure-availability-set "dockeravset" \

--azure-open-port "80" \

--azure-open-port "443" \

--azure-private-ip-address? 192.168.0.10 \

指定的內(nèi)網(wǎng) IP 簡易不要在網(wǎng)段中太靠前,有些 IP 已經(jīng)被預(yù)留,創(chuàng)建時會出現(xiàn)使用預(yù)留 IP 的錯誤。

--azure-static-public-ip \

公網(wǎng) IP 不需要指定值,由 Azure 分配,公網(wǎng) IP 的名字也由 Docker-machine 自動命名。

--azure-environment "AzureChinaCloud" dockervm01

創(chuàng)建成功后,本地文件夾 C:\Users.docker\machine\machines\ 下會產(chǎn)生一個以虛擬機(jī)命名命名的文件夾,該文件夾中包含的文件有:

其中,config.json 文件保存了關(guān)于該虛擬機(jī)的一些配置信息:虛擬機(jī)的配置和連接信息;docker 證書信息等。如果遺失,需要手動創(chuàng)建,其中關(guān)于虛擬機(jī)的信息可以通過 portal 或者 powershell 獲取。

id_rsa* 是 ssh 連接的密鑰和公鑰;如果遺失,可通過 portal 重置,并修改這兩個文件即可。

*pem 文件是 docker 服務(wù)啟動時用到的證書。如果遺失,無法找回,可通過 regenerate-certs 重置,但會影響現(xiàn)有的 docker 服務(wù)。

管理

通過 docker-machine -help 可以查看 docker-machine 支持的命令和操作。

如 ls 查看虛擬機(jī)及基本狀態(tài):

env 查看某臺 VM 的配置環(huán)境

ssh 登錄虛擬機(jī)

使用 docker-machine 創(chuàng)建的虛擬機(jī),和通過其他方式如 portal,powershell 創(chuàng)建的虛擬機(jī)沒有本質(zhì)上的區(qū)別,用戶可以使用 portal 或者 powershell 等命令行進(jìn)行如開關(guān)機(jī),resize,設(shè)置 DNS 等管理。

故障排查:

Docker-machine v.0.7.0 對 CentOS 的支持有一定問題。通過該版本配置的 docker 服務(wù)無法正常啟動。建議到 github(https://github.com/docker/machine)上查詢最新版本信息,以及已知 bug。

下面錯誤一般是因?yàn)?docker vm 上的證書與本地的證書不匹配造成的;使用 regenerate-certs 可以重置證書。立即訪問http://market.azure.cn

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容