CentOS 7.6.1810 安裝 Docker-machine 0.16.0
其它系統安裝說明請訪問:官方文檔
Centos 7系統請使用如下代碼:
$ base=https://github.com/docker/machine/releases/download/v0.16.0 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
chmod +x /tmp/docker-machine && sudo install /tmp/docker-machine /usr/bin/docker-machine

Check the installation by displaying the Machine version:
$ docker-machine version docker-machine version 0.16.0, build 9371605
下載 completion script:docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash 將其放在/etc/bash_completion.d目錄下
編輯 /root/.bashrc文件如下
vim /root/.bashrc
PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
若出現如下錯誤
![]()
請在 /root/.bashrc 添加如下代碼
source /etc/bash_completion.d/docker-machine-wrapper.bash source /etc/bash_completion.d/docker-machine-prompt.bash source /etc/bash_completion.d/docker-machine.bash

並重新source下bashrc
source /root/.bashrc
安裝完成。
通過docker-machine在其它host創建docker,創建 machine 要求能夠無密碼登錄遠程主機,所以需要先通過如下命令將 ssh key 拷貝到 192.168.1.206. 可查 官方文檔
ssh-keygen #生成密鑰,生成位置/root/.ssh/
ssh-copy-id root@192.168.1.206 #復制公鑰至遠程目標
ssh 192.168.1.206 #遠程目標
vim /etc/ssh/sshd.config #配置遠程主機
PubkeyAuthentication yes #打開此行注釋
service sshd restart #重啟ssh服務
setenfoce 0 #官方並沒有提示關閉遠程主機的selinux,但是我關閉了
systemctl stop firewalld #關閉遠程主機的防火牆
systemctl disable firewalld #禁止開機啟動
一切准備就緒,執行 docker-machine create 命令創建 docker(此處為計算機名,可以是elk,zabbix,mysql等有意義的名字)
docker-machine create -d generic --generic-ip-address=192.168.1.234 --generic-ssh-key ~/.ssh/id_rsa --generic-ssh-user=root docker #虛機使用此行
# docker-machine create --driver generic --generic-ip-address=192.168.1.206 elk #cloudman ubuntu16.0.4使用

執行 docker-machine ls查看安裝完成的docker
docker-machine ls
遠程到目標主機並查看docker daemon 的具體配置

vim /etc/systemd/system/docker.service.d/10-machine.conf #針對centos 7.6.1810
# vim /etc/systemd/system/docker.service #針對ubuntu 16.0.4

-
-H tcp://0.0.0.0:2376使 docker daemon 接受遠程連接。 -
--tls*對遠程連接啟用安全認證和加密。
查看遠程主機docker的env環境
docker-machine env docker

eval $(docker-machine env docker) #通過docker-machine管理192.168.1.234上的docker
看到命令行提示符已經變了,其原因是我們之前在$HOME/.bashrc 中配置了 PS1='[\u@\h \W$(__docker_machine_ps1)]\$ ',用於顯示當前 docker host。
eval $(docker-machine env zabbix) #切換到 zabbix
docker-machine upgrade docker zabbix #批量執行更新 machine 的 docker 到最新版本
docker-machine config docker #查看machine 的 docker daemon 配置
stop/start/restart 是對 machine 的操作系統操作,而 不是 stop/start/restart docker daemon
docker-machine scp docker:/tmp/a zabbix:/tmp/b #在不同的host之間拷貝數據
以上是通過docker-machine遠程其它主機安裝docker,及一些常用操作
下面是如何通過docker-machinet刪除之前安裝docker. 官網文檔
Remove a machine. This removes the local reference and deletes it on the cloud provider or virtualization management platform.
$ docker-machine rm --help Usage: docker-machine rm [OPTIONS] [arg...] Remove a machine Description: Argument(s) are one or more machine names. Options: --force, -f Remove local configuration even if machine cannot be removed, also implies an automatic yes (`-y`) -y Assumes automatic yes to proceed with remove, without prompting further user confirmation
Examples
$ docker-machine ls NAME ACTIVE URL STATE URL SWARM DOCKER ERRORS bar - virtualbox Running tcp://192.168.99.101:2376 v1.9.1 baz - virtualbox Running tcp://192.168.99.103:2376 v1.9.1 foo - virtualbox Running tcp://192.168.99.100:2376 v1.9.1 qix - virtualbox Running tcp://192.168.99.102:2376 v1.9.1 $ docker-machine rm baz About to remove baz Are you sure? (y/n): y Successfully removed baz $ docker-machine ls NAME ACTIVE URL STATE URL SWARM DOCKER ERRORS bar - virtualbox Running tcp://192.168.99.101:2376 v1.9.1 foo - virtualbox Running tcp://192.168.99.100:2376 v1.9.1 qix - virtualbox Running tcp://192.168.99.102:2376 v1.9.1 $ docker-machine rm bar qix About to remove bar, qix Are you sure? (y/n): y Successfully removed bar Successfully removed qix $ docker-machine ls NAME ACTIVE URL STATE URL SWARM DOCKER ERRORS foo - virtualbox Running tcp://192.168.99.100:2376 v1.9.1 $ docker-machine rm -y foo About to remove foo Successfully removed foo
