管理多個docker host主機
用 Docker Machine 可以批量安裝和配置 docker host稀颁,這個 host 可以是本地的虛擬機馏谨、物理機别渔,也可以是公有云中的云主機。
Docker Machine 支持在不同的環(huán)境下安裝配置 docker host惧互,包括:
1钠糊、常規(guī) Linux 操作系統(tǒng)
2、虛擬化平臺 - VirtualBox壹哺、VMWare抄伍、Hyper-V
3、OpenStack
4管宵、公有云 - Amazon Web Services截珍、Microsoft Azure、Google Compute Engine箩朴、Digital Ocean 等
Docker Machine 為這些環(huán)境起了一個統(tǒng)一的名字:provider岗喉。對于某個特定的 provider,Docker Machine 使用相應(yīng)的 driver 安裝和配置 docker host炸庞,如下圖所示:
實驗環(huán)境
- 操作系統(tǒng):ubuntu
- ip:10.10.8.125钱床、10.10.8.126、10.10.8.127
- 10.10.8.125 上安裝 Docker Machine埠居,然后通過 docker-machine 命令在其他兩個 host 上部署 docker查牌。
安裝 Docker Machine
curl -L https://github.com/docker/machine/releases/download/v0.9.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
創(chuàng)建 Machine
“創(chuàng)建 Machine” 指的就是在 host 上安裝和部署 docker事期。
創(chuàng)建 machine 要求能夠無密碼登錄遠程主機,所以需要先通過如下命令將 ssh key 拷貝到10.10.8.126纸颜。
執(zhí)行 docker-machine create 命令創(chuàng)建 host1:
docker-machine create --driver generic --generic-ip-address=10.10.8.126 host1
因為我們是往普通的 Linux 中部署 docker兽泣,所以使用 `generic` driver,其他 driver 可以參考文檔 https://docs.docker.com/machine/drivers/胁孙。
--generic-ip-address 指定目標系統(tǒng)的 IP唠倦,并命名為 host1
執(zhí)行 docker-machine ls可以看到host1。使用同樣的方法創(chuàng)建 host2:
docker-machine create --driver generic --generic-ip-address=10.10.8.107 host2
創(chuàng)建成功后 docker-machine ls 可以看到 host1 和 host2 都已經(jīng)就緒:
# docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
host1 - generic Running tcp://10.10.8.126:2376 v18.06.1-ce
host2 - generic Running tcp://10.10.8.127:2376 v18.06.1-ce
管理machine
用 docker-machine 創(chuàng)建 machine 的過程很簡潔涮较,非常適合多主機環(huán)境稠鼻。除此之外,Docker Machine 也提供了一些子命令方便對 machine 進行管理狂票。其中最常用的就是無需登錄到 machine 就能執(zhí)行 docker 相關(guān)操作候齿。
執(zhí)行遠程 docker 命令我們需要通過 -H 指定目標主機的連接字符串,比如:
docker -H tcp://10.10.8.126:2376 ps
Docker Machine 則讓這個過程更簡單苫亦。docker-machine env host1顯示訪問 host1 需要的所有環(huán)境變量毛肋。
根據(jù)提示怨咪,執(zhí)行 eval $(docker-machine env host1)可以切換到host1
個有用的 docker-machine 子命令:
docker-machine upgrade 更新 machine 的 docker 到最新版本屋剑,可以批量執(zhí)行;
docker-machine config 查看 machine 的 docker daemon 配置诗眨;
stop/start/restart 是對 machine 的操作系統(tǒng)操作唉匾,而 不是 stop/start/restart docker daemon。
docker-machine scp 可以在不同 machine 之間拷貝文件匠楚。