如何在云服務平臺上使用Docker Machine
大家好,今天我們來了解如何使用Docker Machine在各種云服務提供商的平臺上部署Docker。Docker Machine是一個可以幫助我們在自己的電腦、云服務提供商的平臺以及我們數據中心的機器上創建Docker機器的應用程序。它為創建服務器、在服務器中安裝Docker、根據用戶需求配置Docker客戶端提供了簡單的解決方案。驅動API對本地機器、數據中心的虛擬機或者公用云機器都適用。 Docker Machine支持Windows、OSX和Linux,并且提供一個獨立的二進制文件,可以直接使用。它讓我們可以充分利用支持Docker的基礎設施的生態環境合作伙伴,并且使用相同的接口進行訪問。它讓人們可以使用一個命令來簡單而迅速地在不同的云平臺部署Docker容器。
1. 安裝Docker Machine
Docker Machine可以很好地支持每一種Linux發行版。首先,我們需要從Github網站下載***版本的。這里我們使用curl來下載目前***0.2.0版本的Docker Machine。
在64位操作系統運行:
- # curl -L https://github.com/docker/machine/releases/download/v0.2.0/docker-machine_linux-amd64 > /usr/local/bin/docker-machine
在32位操作系統運行:
- # curl -L https://github.com/docker/machine/releases/download/v0.2.0/docker-machine_linux-i386 > /usr/local/bin/docker-machine
下載***版本的Docker Machine并將docker-machine文件放到了/usr/local/bin/后,添加執行權限:
- # chmod +x /usr/local/bin/docker-machine
完成如上操作后,我們需要確認已經成功安裝docker-machine了??梢赃\行如下命令檢查,它會輸出系統中docker-machine的版本:
- # docker-machine -v
要在我們的機器上啟用docker命令,需要使用如下命令安裝Docker客戶端:
- # curl -L https://get.docker.com/builds/linux/x86_64/docker-latest > /usr/local/bin/docker
- # chmod +x /usr/local/bin/docker
2. 創建機器
在自己的Linux機器上安裝好了Docker Machine之后,我們想要將一個docker虛擬機部署到云服務器上。Docker Machine支持幾個流行的云平臺,如igital Ocean、Amazon Web Services(AWS)、Microsoft Azure、Google Cloud Computing及其它等等,所以我們可以在不同的平臺使用相同的接口來部署Docker。本文中我們會使用digitalocean驅動在 Digital Ocean的服務器上部署Docker,--driver選項指定digitalocean驅動,--digitalocean-access- token選項指定Digital Ocean Control Panel提供的API Token,命令***的是我們創建的Docker虛擬機的機器名。運行如下命令:
- # docker-machine create --driver digitalocean --digitalocean-access-token <API-Token> linux-dev
- # eval "$(docker-machine env linux-dev)"
注意: 這里linux-dev是我們將要創建的機器的名稱。是一個安全key,可以在Digtal Ocean Control Panel生成。要找到這個key,我們只需要登錄到我們的Digital Ocean Control Panel,然后點擊API,再點擊 Generate New Token,填寫一個名稱,選上Read和Write。然后我們就會得到一串十六進制的key,那就是,簡單地替換到上邊的命令中即可。
運行如上命令后,我們可以在Digital Ocean Droplet Panel中看到一個具有默認配置的droplet已經被創建出來了。
簡便起見,docker-machine會使用默認配置來部署Droplet。我們可以通過增加選項來定制我們的Droplet。這里是一些digitalocean相關的選項,我們可以使用它們來覆蓋Docker Machine所使用的默認配置。
- --digitalocean-image "ubuntu-14-04-x64" 用于選擇Droplet的鏡像
- --digitalocean-ipv6 enable 啟用IPv6網絡支持
- --digitalocean-private-networking enable 啟用專用網絡
- --digitalocean-region "nyc3" 選擇部署Droplet的區域
- --digitalocean-size "512mb" 選擇內存大小和部署的類型
如果你想在其他云服務使用docker-machine,并且想覆蓋默認的配置,可以運行如下命令來獲取Docker Mackine默認支持的對每種平臺適用的參數。
- # docker-machine create -h
#p#
3. 選擇活躍主機
部署Droplet后,我們想馬上運行一個Docker容器,但在那之前,我們需要檢查下活躍主機是否是我們需要的機器。可以運行如下命令查看。
- # docker-machine ls
ACTIVE一列有“*”標記的是活躍主機。
現在,如果我們想將活躍主機切換到需要的主機,運行如下命令:
- # docker-machine active linux-dev
注意:這里,linux-dev是機器名,我們打算激活這個機器,并且在其上運行Docker容器。
4. 運行一個Docker容器
現在,我們已經選擇了活躍主機,就可以運行Docker容器了??梢詼y試一下,運行一個busybox容器來執行echo hello word命令,這樣就可以得到輸出:
- # docker run busybox echo hello world
注意:如果你試圖在一個裝有32位操作系統的宿主機部署Docker容器,使用SSH來運行docker是個好辦法。這樣你就可以簡單跳過這一步,直接進入下一步。
5. SSH到Docker機器中
如果我們想在機器或者Droplet上控制之前部署的Docker機器,可以使用docker-machine ssh命令來SSH到機器上:
- # docker-machine ssh
SSH到機器上之后,我們可以在上邊運行任何Docker容器。這里我們運行一個nginx:
- # docker run -itd -p 80:80 nginx
操作完畢后,我們需要運行exit命令來退出Droplet或者服務器。
- # exit
5. 刪除主機
刪除在運行的主機以及它的所有鏡像和容器,我們可以使用docker-machine rm命令:
- # docker-machine rm linux-dev
使用docker-machine ls命令檢查是否成功刪除了:
- # docker-machine ls
#p#
6. 在不使用驅動的情況新增一個主機
我們可以在不使用驅動的情況往Docker增加一臺主機,只需要一個URL。它可以使用一個已有機器的別名,所以我們就不需要每次在運行docker命令時輸入完整的URL了。
$ docker-machine create --url=tcp://104.131.50.36:2376 custombox
7. 管理主機
如果你已經讓Docker運行起來了,可以使用簡單的docker-machine stop命令來停止所有正在運行的主機,如果需要再啟動的話可以運行docker-machine start:
- # docker-machine stop
- # docker-machine start
你也可以使用如下命令來使用機器名作為參數來將其停止或啟動:
- $ docker-machine stop linux-dev
- $ docker-machine start linux-dev
總結
Docker Machine是一個非常棒的工具,可以使用Docker容器快速地部署服務。文中我們使用Digital Ocean Platform作演示,但Docker Machine還支持其他平臺,如Amazon Web Service、Google Cloud Computing。使用Docker Machine,快速、安全地在幾種不同平臺部署Docker容器變得很簡單了。因為Docker Machine還是Beta版本,不建議在生產環境使用。如果你有任何問題、建議、反饋,請在下方的評論框中寫下來,我們會改進或者更新我們的內容。謝謝!享受吧 :-)