Docker動手教程6:容器多主機

內容摘要

docker-machine程序安裝與卸載

創建docker-machine

docker-machine常用命令

前面章節我們講解的都是單主機環境下的容器管理,從本節開始,我們的學習將會全部在多主機環境下。docker專門提供了多主機管理工具docker machine。

安裝docker-machine程序

安裝前請將容器環境置於最初狀態,並將主機名改為docker。

參考鏈接:

官網:https://docs.docker.com/machine/install-machine/

github:https://github.com/docker/machine/releases

目前github最新發行版本是0.16.2,我們安裝0.16.0版本。

官方提供的安裝命令如下:

 base=https://github.com/docker/machine/releases/download/v0.16.0 &&
 curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
 sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
 chmod +x /usr/local/bin/docker-machine

對於我們的容器環境,uname信息如下:

Docker動手教程6:容器多主機

上面的命令先將docker machine下載到/tmp/docker-machine下,之後將下載的文件移動到/usr/local/bin/docker-machine,最後改變文件執行權限。

在名為docker的主機上運行上述命令,安裝docker-machine:

Docker動手教程6:容器多主機

命令執行成功。

下面檢查下docker machine是否安裝成功:

運行 docker-machine version 命令,結果如下:

Docker動手教程6:容器多主機

可以看到就是我們安裝的版本,docker machine安裝成功。

為了方便使用docker machine的shell指令,我們需要安裝補全命令腳本。

使用如下指令將machine腳本保存到centos目錄/etc/bash_completion.d:

base=https://raw.githubusercontent.com/docker/machine/v0.16.0
for i in docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash
do
 sudo wget "$base/contrib/completion/bash/${i}" -P /etc/bash_completion.d
done

執行結果如下:

Docker動手教程6:容器多主機

在/etc/bash_completion.d目錄下查看:

Docker動手教程6:容器多主機

可以看到增加了3個腳本。

接著,運行下面指令使腳本生效:

source /etc/bash_completion.d/docker-machine-prompt.bash

最後,修改~/.bashrc 文件,增加內容如下:

Docker動手教程6:容器多主機

驗證是否成功,查詢所有machine,使用docker-machine ls命令:

Docker動手教程6:容器多主機

命令執行成功。

卸載docker-machine

刪除單個docker machine:

docker-machine rm 

刪除所有docker machine:

docker-machine rm -f $(docker-machine ls -q)

刪除docker machine可執行文件:

rm $(which docker-machine)

which docker-machine命令運行結果如下:

Docker動手教程6:容器多主機

在環境準備好後,下面開始創建docker-machine。

創建docker-machine

創建docker-machine的本質是在其他主機上部署容器環境。為了測試,大家在阿里雲上申請另外兩臺虛擬機,注意:不要使用裝有docker環境的鏡像,即不要安裝docker程序,否則無法完成測試。

阿里雲虛擬機申請結果如下:

Docker動手教程6:容器多主機

兩臺虛擬機 主機名和公有IP分別如下:

docker-machine001:120.25.124.44

docker-machine002:39.108.65.200

安裝有docker-machine程序的虛擬機信息如下:

docker:120.25.125.32

下面為了敘述方便,使用主機名敘述。docker-machine001簡稱為machine1,docker-machine002簡稱為machine2。

由於docker主機要訪問另外兩臺主機,因此需要初始化ssh環境。操作如下:

在docker主機上生成密鑰,命令為:ssh-keygen -t rsa

Docker動手教程6:容器多主機

將ssh key拷貝到machine1和machine2,命令為: ssh-copy-id:

Docker動手教程6:容器多主機

執行過程中,需要輸入machine1主機密碼;拷貝密鑰完成後,使用ssh命令連接另一臺主機,可以看到進入machine1主機成功。

對machine2的操作同上,這裡就不展示了。

環境準備好後,下面創建兩個docker-machine,在docker主機上執行下面命令。

命令如下:

docker-machine create --driver generic --generic-ip-address=120.25.124.44 node1
docker-machine create --driver generic --generic-ip-address=39.108.65.200 node2

node1和node2是命名的主機名,這個主機名和上面的主機名不一樣,它們在docker-machine系統中有效。

結果如下:

Docker動手教程6:容器多主機

創建會持續一段時間,完成後,使用docker-machine ls命令查詢,可以看到創建的node1。從查詢結果可以看到:DOCKER列給出了容器版本v19.03.2。

在machine1上查詢docker是否創建成功:

Docker動手教程6:容器多主機

docker狀態正常,使用同樣步驟創建node2。

查詢所有machine,命令:

docker-machine ls
Docker動手教程6:容器多主機

創建成功。

docker-machine常用命令

查詢: docker-machine ls 上面已經使用過,這裡就不顯示了

創建:docker-machine create 參考上面的操作

查詢詳情: docker-machine inspect 主機名

Docker動手教程6:容器多主機

返回結果很多,這裡只展示一部分。

啟動:docker-machine start 主機名

重啟:docker-machine restart 主機名

刪除:docker-machine rm 主機名

Docker動手教程6:容器多主機

查詢狀態:docker-machine 主機名

Docker動手教程6:容器多主機

停止:docker-machine kill 主機名

Docker動手教程6:容器多主機

該命令不是完全支持。

停止: docker-machine stop 主機名

Docker動手教程6:容器多主機

該命令不是完全支持。

注意:docker-machine stop/kill的區別和docker stop/kill的區別類似,前者是優雅的停止,後者是強制停止。

查詢環境變量:docker-machine env 主機名

Docker動手教程6:容器多主機

查詢配置: docker-machine config 主機名

Docker動手教程6:容器多主機

更新docker版本:docker-machine upgrade 主機名

Docker動手教程6:容器多主機

docker-machine的命令就介紹到這裡,其他的命令大家後續用到再講解。

至此,docker-machine基本講解完了,請大家完成實驗。

實驗

使用docker-machine創建容器主機,至少兩個

測試docker-machine常用命令


分享到:


相關文章: