概述
docker入門中,docker swarm都是在本機的虛擬機上,為了更貼近生產環境,我將這部分重新部署到阿里雲。不需要太貴,選最便宜的按量付費ECS,1小時才0.05元。
docker-machine的使用跟docker入門中一樣,只是需要添加阿里雲的docker-machine驅動,同時配置阿里雲docker-machine驅動的環境。
docker安裝
我選擇的是Ubuntu16.04,安裝教程阿里雲提供https://help.aliyun.com/document_detail/60742.html,幾乎涵蓋了主流的操作系統。
docker-machine安裝
先下載二進制文件:wget https://github.com/docker/machine/releases/download/v0.16.0/docker-machine-Linux-x86_64,下載慢甚至下載不下來,就手動下載之后放服務器上。
修改文件權限chmod +x docker-machine-Linux-x86_64。
將二進制文件放到/usr/local/bin目錄下sudo cp docker-machine-Linux-x86_64 /usr/local/bin/docker-machine
使用命令docker-machine -v測試是否安裝成功。
阿里雲docker-machine驅動
阿里雲提供的docker-machine驅動,可以根據配的環境變量置調用阿里雲的API,比如能直接通過docker-machine create購買實例,安裝操作系統並安裝docker,docker start開啟實例,docker stop關閉實例,甚至dokcer rm也會在阿里雲上自動釋放實例。跟在虛擬機上操作時一樣簡單。
https://develop.aliyun.com/command/docker提供下載地址。Ubuntu用的下載地址是https://docker-machine-drivers.oss-cn-beijing.aliyuncs.com/docker-machine-driver-aliyunecs_linux-amd64.tgz。
解壓tar -xvf docker-machine-driver-aliyunecs_linux-amd64.tgz,解壓后里面有個bin文件夾,將這個文件夾放到之前安裝docker-machine的文件夾下就算安裝完成sudo cp docker-machine-driver-aliyunecs.linux-amd64 /usr/local/bin/docker-machine-driver-aliyunecs。
配置阿里雲docker-machine驅動的環境
這個驅動跟docker-machine有類似讀取環境變量的行為,環境變量中配置阿里雲的API key一類的東西,就可以讓docker-machine驅動自動操作我們的阿里雲賬號購買指定的虛擬機並安裝配置相關的環境!花錢更便捷。
找到自己用戶目錄下的.bashrc,在末尾添加如下內容。要在阿里雲控制台上找的參數很多,耐心找。
export ECS_ACCESS_KEY_ID='填你自己key id'
export ECS_ACCESS_KEY_SECRET='填你自己的key secret'
# 購買的鏡像是1核0.5G內存的最小型實例
export ECS_INSTANCE_TYPE='ecs.t5-lc2m1.nano'
# 來個50M寬帶
export ECS_INTERNET_MAX_BANDWIDTH='50'
# 購買的區域是石家庄
export ECS_REGION='cn-zhangjiakou'
# 設置的密碼,一定要8~30位,有大小寫字母,數字和亂七八糟的標點,不然會自動創建失敗
export ECS_SSH_PASSWORD='7b6424B61c6C21~0%39F1C56'
# 磁盤只要20G
export ECS_SYSTEM_DISK_SIZE='20'
# 磁盤用便宜的高效雲盤吧,任性選SSD也行
export ECS_SYSTEM_DISK_CATEGORY='cloud_efficiency'
# 選擇的鏡像是Ubuntu16.04
export ECS_IMAGE_ID='ubuntu_16_0402_64_20G_alibase_20180409.vhd'
# 專用網絡的節點
export ECS_VPC_ID='vpc-8vbhii32tpugfcqbryqcn'
# 虛擬交換機的節點
export ECS_VSWITCH_ID='vsw-8vbweep4xrtamazp50775'
# ECS的標簽
export ECS_TAGS='chen_docker'
# 安全組
export ECS_SECURITY_GROUP='sg-8vb5wwel08nyrih2lmtb'
# 石家庄a區
export ECS_ZONE='cn-zhangjiakou-a'
# 一定要是true
export ECS_IO_OPTIMIZED='true'
添加完成后保存並執行source .bashrc使配置環境生效。
關於這些參數,阿里雲有解釋https://github.com/AliyunContainerService/docker-machine-driver-aliyunecs。
購買阿里雲ECS實例
前面配置的這些環境變量就是為了方便我們買買買。現在購買ECS實例只需要docker-machine create -d aliyunecs <machine name>就可以等待實例從購買到自動配置到可用就行了。
到此,就跟docker入門3中的操作方式一模一樣。
遇到的錯誤
密碼設置過於簡單
我只設置了幾個數字,創建絕對失敗,提示The specified parameter "Password" is not valid.。設置復雜一些的密碼就好。
彈性公網
彈性公網是要收費的,可以將ECS_PRIVATE_ADDR_ONLY添加進來,設置為true,網絡就只有局域網了。但安裝docker需要公網,這樣做的結果就是可以用docker-machine ssh連接進去,但無法聯網,也就無法安裝docker,沒有docker那還做什么。
彈性公網不是按量計費
剛玩docker-machine,使用阿里雲的docker-machine driver創建ECS,之前隨手填了個20M寬帶,一覺醒來發現充值的100塊只有一半了QAQ,結果發現開通的是20M固定寬帶。
這一切的根源就在於docker-machine-driver的版本。一定要下載最新版的https://github.com/AliyunContainerService/docker-machine-driver-aliyunecsdocker-machine-driver,老版本根本沒有ECS_INTERNET_CHARGE_TYPE這個選項,所以會自動開成固定寬帶,這一天費用就海了去了!
