Docker Machine 可以集中管理所有的 docker 主机,比如快速的给 100 台服务器安装上 docker。使用 docker-machine 命令,您可以启动,检查,停止和重新启动托管主机,也可以升级 Docker 客户端和守护程序,以及配置 Docker 客户端与您的主机进行通信。
主机 | IP |
---|---|
docker-machine本地主机150 | 192.168.1.150 |
docker本地主机150 | 192.168.1.150 |
docker远程主机160 | 192.168.1.160 |
docker远程主机170 | 192.168.1.170 |
1、本地主机150安装Docker-Machine。
base=https://github.com/docker/machine/releases/download/v0.16.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
mv /tmp/docker-machine /usr/local/bin/docker-machine &&
chmod +x /usr/local/bin/docker-machine
2、本地主机150查看Docker-Machine是否安装成功。
docker-machine version
docker-machine通过ssh连接到docker主机,从网上下载并安装docker工具,需要用root权限来安装。在centos系统下,默认禁止root用户通过ssh登录系统,因此需要先配置root允许ssh登录系统并免交互登录或指定私钥登录。
1、本地主机150创建密钥对,输入命令ssh-keygen,按ENTER键3次,创建完成。
ssh-keygen
2、复制本地主机150私钥至主机150文件内/root/.ssh/
authorized_keys,运行命令,输入主机150的root账户密码。
ssh-copy-id [email protected]
3、本地主机150修改配置文件/etc/ssh/sshd_config,允许其他主机使用root登录系统。
vi /etc/ssh/sshd_config
PermitRootLogin yes #修改此项为允许root远程登录
4、本地主机150开放防火墙端口2376。
firewall-cmd --zone=public --add-port=2376/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --query-port=2376/tcp
5、本地主机150使用如下命令创建docker主机vm150,指定–driver generic,主机的IP地址以及授权连接到主机的SSH私钥的路径,自动下载安装最新版docker。 (使用SSH创建计算机,指定–driver generic)
docker-machine create --driver generic --generic-ip-address=192.168.1.150 --generic-ssh-key ~/.ssh/id_rsa --generic-ssh-user=root vm150
docker-machine ip vm150
6、generic driver不支持启动和停止vm150。
docker-machine stop vm150
docker-machine kill vm150
docker-machine restart vm150
8、查看docker是否安装成功。
docker version
9、列出可用的机器。
docker-machine ls
10、创建并运行容器cent150,查看容器运行状态,进入容器,查看ip,退出容器cent150。
docker run -itd --name cent150 centos:centos7.7.1908 /bin/bash
docker exec -it cent150 /bin/bash
cat /etc/hosts
exit
docker-machine通过ssh连接到docker主机,从网上下载并安装docker工具,需要用root权限来安装。在centos系统下,默认禁止root用户通过ssh登录系统,因此需要先配置root允许ssh登录系统并免交互登录或指定私钥登录。
1、本地主机150创建密钥对,输入命令ssh-keygen,按ENTER键3次,创建完成。(若已创建密钥对,则本步骤可省略)
ssh-keygen
2、复制本地主机150私钥至远程主机160,运行命令,输入远程主机160的root账户密码。
ssh-copy-id [email protected]
3、远程主机160修改配置文件/etc/ssh/sshd_config,允许其他主机使用root登录系统。
vi /etc/ssh/sshd_config
PermitRootLogin yes #修改此项为允许root远程登录
4、远程主机160开放防火墙端口2376。
firewall-cmd --zone=public --add-port=2376/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --query-port=2376/tcp
5、本地主机150使用如下命令创建远程docker主机vm160,指定–driver generic,远程主机的IP地址以及授权连接到远程主机的SSH私钥的路径,自动下载安装最新版docker。 (使用的是Machine不直接支持的驱动程序,或者要导入现有主机以允许Docker Machine管理,则指定–driver为generic很有用。)
docker-machine create --driver generic --generic-ip-address=192.168.1.160 --generic-ssh-key ~/.ssh/id_rsa --generic-ssh-user=root vm160
5、查看远程vm160的ip。
docker-machine ip vm160
6、generic driver不支持启动和停止vm160。
docker-machine stop vm160
docker-machine kill vm160
7、重启vm160,远程计算机主机名称将变为vm160。
docker-machine restart vm160
8、从本地主机150远程登录vm160。
docker-machine ssh vm160
docker version
10、创建并运行容器cent160,查看容器运行状态,进入容器,查看ip,退出容器cent160。
docker run -itd --name cent160 centos:centos7.7.1908 /bin/bash
docker ps
docker exec -it cent160 /bin/bash
cat /etc/hosts
exit
1、远程主机170安装最新版docker。
参考博客:https://blog.csdn.net/renfeigui0/article/details/103314065
2、创建并运行容器cent170-1、cent170-2、cent170-3,查看容器运行状态。
docker run -itd --name cent170-1 centos:centos7.7.1908 /bin/bash
docker run -itd --name cent170-2 centos:centos7.7.1908 /bin/bash
docker run -itd --name cent170-3 centos:centos7.7.1908 /bin/bash
docker ps
3、本地主机150创建密钥对,输入命令ssh-keygen,按ENTER键3次,创建完成。(若已创建密钥对,则本步骤可省略)
ssh-keygen
4、复制本地主机150私钥至远程主机170,运行命令,输入远程主机170的root账户密码。
ssh-copy-id [email protected]
5、远程主机170修改配置文件/etc/ssh/sshd_config,允许其他主机使用root登录系统。
vi /etc/ssh/sshd_config
PermitRootLogin yes #修改此项为允许root远程登录
6、远程主机170开放防火墙端口2376。
firewall-cmd --zone=public --add-port=2376/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --query-port=2376/tcp
7、本地主机150使用如下命令创建远程docker主机vm170,指定–driver generic,远程主机的IP地址以及授权连接到远程主机的SSH私钥的路径,自动下载安装最新版docker。 (使用的是Machine不直接支持的驱动程序,或者要导入现有主机以允许Docker Machine管理,则指定–driver为generic很有用。)
docker-machine create --driver generic --generic-ip-address=192.168.1.170 --generic-ssh-key ~/.ssh/id_rsa --generic-ssh-user=root vm170
8、查看vm170的ip。
docker-machine ip vm170
9、generic driver不支持启动和停止vm170。
docker-machine stop vm170
docker-machine kill vm170
10、重启vm170。
docker-machine restart vm170
11、从本地主机150远程登录vm170,查看容器运行状态和ip。
docker-machine ssh vm170
docker ps
docker exec -it cent170-3 /bin/bash
cat /etc/hosts
exit
exit
docker-machine命令官方文档:https://docs.docker.com/machine/reference/
docker-machine命令 | 参数说明 |
---|---|
docker-machine active | 查看Docker主机活动状态。 |
docker-machine ls | 查看Docker主机活动状态。 |
echo $DOCKER_HOST | 查看Docker主机活动状态。 |
docker-machine config vm150 | 查看当前激活状态Docker主机vm150的连接信息。 |
docker-machine create --driver generic --generic-ip-address=192.168.1.170 --generic-ssh-key ~/.ssh/id_rsa --generic-ssh-user=root vm170 | 创建Docker主机vm170,指定驱动为generic,指定ip为192.168.1.170,指定登录方式为私钥免密登录,指定登录账户为root。 |
docker-machine env vm150 | 显示主机vm150的环境变量。 |
docker-machine inspect vm150 | 以 json格式输出指定Docker主机vm150的详细信息。 |
docker-machine ip vm150 | 获取指定Docker主机vm150的ip地址。 |
docker-machine kill vm150 | 直接杀死指定的Docker主机vm150。 |
docker-machine ls | 列出所有的管理主机。 |
docker-machine provision vm150 | 重新配置指定主机vm150。 |
docker-machine regenerate-certs vm150 | 为主机vm150 重新生成 TLS 信息。 |
docker-machine restart vm150 | 重启指定的主机vm150。 |
docker-machine rm vm150 | 删除Docker主机vm150,对应的虚拟机也会被删除。 |
docker-machine ssh vm150 | 通过SSH连接到主机vm150 上,执行命令。 |
docker-machine scp dev:/home/docker/foo.txt /root/foo.txt | 在Docker主机之间以及Docker主机和本地主机之间通过scp远程复制数据。 |
docker-machine mount vm160:/home/docker/foo foo | 使用SSHFS将本地计算机上的目录安装到容器中,在本地目录中所做的任何更改也将反映在容器中。 |
docker-machine start vm150 | 启动一个指定的Docker主机vm150,驱动generic时不支持。 |
docker-machine status vm150 | 获取指定Docker主机vm150的状态(状态包括:Running、Paused、Saved、Stopped、Stopping、Starting、Error等)。 |
docker-machine stop vm150 | 停止Docker主机vm150,驱动generic时不支持。 |
docker-machine upgrade vm150 | 将一个指定主机vm150的Docker版本更新为最新。 |
docker-machine url vm150 | 获取指定Docker主机vm150的监听URL。 |
docker-machine version | 显示 Docker Machine 的版本或者主机 Docker 版本。 |
docker-machine help | 显示帮助信息。 |
1、报错"Error with pre-create check: “SSH key does not exist: “/root/.ssh/id_rsa””"原因:未复制私钥至远程主机。
2、报错"Error creating machine: Error checking the host: Error checking and/or regenerating the certs: There was an error validating certificates for host “192.168.1.160:2376”: dial tcp 192.168.1.160:2376: connect: no route to host
You can attempt to regenerate them using ‘docker-machine regenerate-certs [name]’.
Be advised that this will trigger a Docker daemon restart which might stop running containers.
"原因:远程主机未开放防火墙端口2376。
3、查看主机状态,报错"Unable to query docker version: Get https://192.168.1.160:2376/v1.15/version: dial tcp 192.168.1.160:2376: connect: no route to host"原因:远程主机未开放防火墙端口2376。
4、查看主机状态,报错"Unknown Unable to query docker version: Cannot connect to the docker engine endpoint"原因:远程主机未开放防火墙端口2376。