【Docker学习总结】14.Docker的远程访问

一、准备工作

1. 二台安装Docker的服务器

【Docker学习总结】14.Docker的远程访问_第1张图片

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 查看配置是否生效:

【Docker学习总结】14.Docker的远程访问_第2张图片【Docker学习总结】14.Docker的远程访问_第3张图片

3.保证Client API与Server API版本版本一致

远程访问的时候,需要保证两台服务器的API版本一致,通过“docker version”版本信息查看指令,可以看到这里我们安装的是同一版本的Docker:

【Docker学习总结】14.Docker的远程访问_第4张图片【Docker学习总结】14.Docker的远程访问_第5张图片

二、交互网络端配置

方式一:在/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”协议的配置

【Docker学习总结】14.Docker的远程访问_第6张图片

【注意】版本号有变化 (之前端口默认是2375,新版本端口默认是5678)

配置文件修改之后重启!

检查:

 

两台Docker服务器全部启动起来,此时我们使用服务器1来访问服务器2的守护进程。首先我们使用curl指令来访问服务器2的守护进程的info的API:

发现是可以连通的。此时我们可以尝试在Docker的查询指令中间添加“-H tcp://192.168.0.107:5678”来运行远程Docker指令:

【Docker学习总结】14.Docker的远程访问_第7张图片

发现是可以的。

 

如果我们需要频繁访问远程Docker指令,一直添加“-H”指令明显很繁琐,所以Docker客户端提供了一个环境变量来简化该操作。如果指定“DOCKER_HOST”环境变量,就可以在Docker客户端,像连接本机一样,使用远程的Docker服务。
首先我们使用export指令来设置环境变量:export DOCKER_HOST="tcp://192.168.0.107:5678"。
设置完毕之后,我们运行info命令,发现返回的信息是远程服务器的:

【Docker学习总结】14.Docker的远程访问_第8张图片

这是因为此时在执行Docker命令时,会默认的连接到远程的Docker服务器上。
如果我们使用完了远程的服务器,需要连接本机时,只需使用exoprt指令将“DOCKER_HOST”环境变量置空,即可恢复本机的Docker服务连接。此时我们再运行info命令,显示的就是我们本机的Docker信息了:

【Docker学习总结】14.Docker的远程访问_第9张图片

你可能感兴趣的:(【Docker学习总结】14.Docker的远程访问)