1. 二台安装Docker的服务器
2.修改Docker守护进程启动选项,区别服务器
我们在两台服务器中针对Docker守护进程的label进行不同的修改,来区别它们。
在服务器1上,我们修改/etc/docker/daemon.json启动配置文件,将labels选项指定为“docker_server_1”:
"labels":["nodeName=docker_server_1"]
在服务器2上,同样修改/etc/docker/daemon.json启动配置文件,将labels选项指定为“docker_server_2”:
"labels":["nodeName=docker_server_1"]
上述配置完成之后执行下面的命令:
systemctl daemon-reload
systemctl restart docker
通过输入 docker info 查看配置是否生效:
3.保证Client API与Server API版本版本一致
远程访问的时候,需要保证两台服务器的API版本一致,通过“docker version”版本信息查看指令,可以看到这里我们安装的是同一版本的Docker:
方式一:在/etc/docker/daemon.json文件中配置
{
"hosts": ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"]
}
配置文件修改之后,重启:
systemctl daemon-reload
systemctl restart docker
方式二:是在docker daemon的配置文件/lib/systemd/system/docker.service中的“ExecStart”选项后,添加“tcp”协议的配置
【注意】版本号有变化 (之前端口默认是2375,新版本端口默认是5678)
配置文件修改之后重启!
检查:
两台Docker服务器全部启动起来,此时我们使用服务器1来访问服务器2的守护进程。首先我们使用curl指令来访问服务器2的守护进程的info的API:
发现是可以连通的。此时我们可以尝试在Docker的查询指令中间添加“-H tcp://192.168.0.107:5678”来运行远程Docker指令:
发现是可以的。
如果我们需要频繁访问远程Docker指令,一直添加“-H”指令明显很繁琐,所以Docker客户端提供了一个环境变量来简化该操作。如果指定“DOCKER_HOST”环境变量,就可以在Docker客户端,像连接本机一样,使用远程的Docker服务。
首先我们使用export指令来设置环境变量:export DOCKER_HOST="tcp://192.168.0.107:5678"。
设置完毕之后,我们运行info命令,发现返回的信息是远程服务器的:
这是因为此时在执行Docker命令时,会默认的连接到远程的Docker服务器上。
如果我们使用完了远程的服务器,需要连接本机时,只需使用exoprt指令将“DOCKER_HOST”环境变量置空,即可恢复本机的Docker服务连接。此时我们再运行info命令,显示的就是我们本机的Docker信息了: