Docker Machine遠端部署docker主機環境

lightTrace發表於2018-04-17

我學習Docker Machine首先肯定思考為什麼要使用它?我直接上伺服器拉取執行映象跑服務也很快啊!為什麼需要這個Docker Machine呢?
首先學習docker我們體會到了容器的好處,保證了線上線下環境的一致性,但是我們確實能發現從映象的下載到容器的執行,我們用了很多的命令去執行,當我們在本地筆記本完成了測試之後,我們把這些容器部署到生產環境時,我們還是需要執行很多指令碼,這確實是一項複雜的工作!
而使用Docker Machine我們可以在本地部署相應的環境就同時完成遠端docker主機環境的部署,可以節省下很多重複的勞動,減少容錯率。

預設本地主機安裝好docker:
一.下載docker-machine:
curl -L https://github.com/docker/mac…uname -s-uname -m >/tmp/docker-machine && install /tmp/docker-machine /usr/local/bin/docker-machine

檢視是否成功:

[root@localhost ~]# docker-machine -v
docker-machine version 0.13.0, build 9ba6da9

二.ssh無密碼登入

本地主機ip:192.168.1.9
遠端主機ip:192.168.1.10

[root@localhost ~]# ssh-keygen
[root@localhost ~]# ssh-copy-id 192.168.1.10

三.開啟machine通訊埠

[root@localhost ~]# firewall-cmd --add-port=2376/tcp --permanent
[root@localhost ~]# firewall-cmd --reload

四.建立docker遠端主機命名farHost

[root@localhost~]# docker-machine create -d generic –generic-ip-address=192.168.1.10 farHost
Running pre-create checks…
Creating machine…
(swarm-master) No SSH key specified. Assuming an existing key at the default location.
Waiting for machine to be running, this may take a few minutes…
Detecting operating system of created instance…
Waiting for SSH to be available…
Detecting the provisioner…
Provisioning with centos…
Running…
[root@node1 ~]# docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
farHost- generic Running tcp://192.168.1.10:2376 v17.12.1-ce

五.改變docker環境變數

[root@node1 ~]# docker-machine env host1
export DOCKER_TLS_VERIFY="1"    //使用tls協議
export DOCKER_HOST="tcp://192.168.1.10:2376"   //遠端主機docker的ip地址及埠
export DOCKER_CERT_PATH="/root/.docker/machine/machines/farHost" 指明瞭我們docker客戶端在認證的過程中使用證書的路徑 
export DOCKER_MACHINE_NAME="farHost"//遠端主機docker名
# Run this command to configure your shell: 
# eval $(docker-machine env farHost)

把farHost的環境變數配置到當前的shell中

[root@localhost~]# eval $(docker-machine env farHost)

六.執行容器檢視是否同步

[root@localhost~]# docker run -d busybox
[root@localhost~]# docker-machine ssh host1
[root@farHost~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest f6e427c148a7 6 days ago 1.15MB
[root@farHost~]# docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8d9b5005a264 busybox "sh" 17 seconds ago Up 16 seconds ago modest_joliot
[root@farHost~]# exit
[root@localhost~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8d9b5005a264 busybox "sh" 57seconds ago Up 16 seconds ago modest_joliot

發現本地主機和遠端主機同時都執行了一樣的busybox的容器,即使我們有再多的機器需要部署生產環境,我們也只需要 do once就可以了。

相關文章