CentOS7 docker开启tcp端口并进行客户端远程连接
#docker版本:18.09.0,最好保证客户端端口和服务端端口相同
[root@Centos7 ~]# dockerd-ce -v Docker version 18.09.0, build 4d60db4
网络环境概述 server:192.168.100.7:2375 client:192.168.100.8
#docker默认只提供本地unix,sock文件的连接方式,让docker能够监听tcp端口还需要进行一些配置。
1.跳转docker启动文件,定义启动时执行的参数。
#dockerd -H 参数指定docker应用程序监听方式。当然,socket文件位置,2375端口都可以自行更改,socket文件位置更改的话,使用docker命令时也需要调整一些参数,连接时会有说明。
[root@server system]# cat /lib/systemd/system/docker.service |grep "ExecStart" --color ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
2.调整配置后重启docker服务,并观察端口是否监听
[root@server ~]# systemctl restart docker [root@server ~]# ss -lt |grep 2375 LISTEN 0 128 :::2375 :::*
3.telnet服务端2375端口测试
[root@client ~]# telnet 192.168.100.7 2375 Trying 192.168.100.7... Connected to 192.168.100.7. Escape character is '^]'. ^] telnet> quit
#如果telnet不通,可能是server端防火墙存在限制,添加下方规则后在测试连接。
[root@server ~]# iptables -I INPUT -ptcp --dport 2375 -j ACCEPT
#在client端连接服务端并执行命令
1.tcp连接
#你在使用docker连接时,可能会遇到下面问题:first path segment in URL cannot contain colon
#ps 为在server端执行的命令
[root@client ~]# docker -H 192.168.100.7:2375 ps parse 192.168.100.7:2375: first path segment in URL cannot contain colon
#将上面命令更改为下面命令即可。
[root@client ~]# docker -H tcp://192.168.100.7:2375 ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2.unix socket文件连接。
#同理,如果你更改了sock文件的位置,通过本机的socket文件连接时也要指定socket文件位置。
[root@server ~]# docker -H unix:///var/run/docker.sock ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES