用 docker-machine
創建 machine 的過程很簡潔,非常適合多主機環境。除此之外,Docker Machine 也提供了一些子命令方便對 machine 進行管理。其中最常用的就是無需登錄到 machine 就能執行 docker 相關操作。
我們前面學過,要執行遠程 docker 命令我們需要通過 -H
指定目標主機的連接字符串,比如:
docker -H tcp://192.168.56.105:2376 ps
Docker Machine 則讓這個過程更簡單。docker-machine env host1
顯示訪問 host1 需要的所有環境變量:
根據提示,執行 eval $(docker-machine env host1)
:
然后,就可以看到命令行提示符已經變了,其原因是我們之前在$HOME/.bashrc
中配置了 PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
,用於顯示當前 docker host。
在此狀態下執行的所有 docker 命令其效果都相當於在 host1 上執行,例如啟動一個 busybox 容器:
執行 eval $(docker-machine env host2)
切換到 host2:
下面再介紹幾個有用的 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 之間拷貝文件,比如:
docker-machine scp host1:/tmp/a host2:/tmp/b
可見,在多主機環境下 Docker Machine 可以大大提高效率,而且操作也很簡單,希望大家都能掌握。
下一節我們開始學習跨主機的容器網絡。