docker容器技術學習筆記(8、Docker Machine)

管理多個docker host主機

用 Docker Machine 可以批量安裝和配置 docker host,這個 host 可以是本地的虛擬機、物理機,也可以是公有云中的雲主機。

Docker Machine 支持在不同的環境下安裝配置 docker host,包括:
1、常規 Linux 操作系統
2、虛擬化平臺 - VirtualBox、VMWare、Hyper-V
3、OpenStack
4、公有云 - Amazon Web Services、Microsoft Azure、Google Compute Engine、Digital Ocean 等

Docker Machine 爲這些環境起了一個統一的名字:provider。對於某個特定的 provider,Docker Machine 使用相應的 driver 安裝和配置 docker host,如下圖所示:


實驗環境

  • 操作系統: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

創建 Machine

“創建 Machine” 指的就是在 host 上安裝和部署 docker。

創建 machine 要求能夠無密碼登錄遠程主機,所以需要先通過如下命令將 ssh key 拷貝到10.10.8.126。

執行 docker-machine create 命令創建 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 指定目標系統的 IP,並命名爲 host1

執行 docker-machine ls可以看到host1。使用同樣的方法創建 host2:
docker-machine create --driver generic --generic-ip-address=10.10.8.107 host2

創建成功後 docker-machine ls 可以看到 host1 和 host2 都已經就緒:

# 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 創建 machine 的過程很簡潔,非常適合多主機環境。除此之外,Docker Machine 也提供了一些子命令方便對 machine 進行管理。其中最常用的就是無需登錄到 machine 就能執行 docker 相關操作。

執行遠程 docker 命令我們需要通過 -H 指定目標主機的連接字符串,比如:
docker -H tcp://10.10.8.126:2376 ps

Docker Machine 則讓這個過程更簡單。docker-machine env host1顯示訪問 host1 需要的所有環境變量。

根據提示,執行 eval $(docker-machine env host1)可以切換到host1

個有用的 docker-machine 子命令:

docker-machine upgrade 更新 machine 的 docker 到最新版本,可以批量執行;
docker-machine config 查看 machine 的 docker daemon 配置;
stop/start/restart 是對 machine 的操作系統操作,而 不是 stop/start/restart docker daemon。
docker-machine scp 可以在不同 machine 之間拷貝文件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章