Docker客户端无需专属IP,真正需配置的是守护进程监听地址及访问控制;通过修改daemon.json启用TCP监听,再用iptables的DOCKER-USER链限制指定源IP访问,并强调必须启用TLS或SSH隧道保障安全。
docker 客户端本身不绑定 ip,也不需要“专属 ip”来连接守护进程;真正需要配置的是 守护进程(dockerd)监听哪个地址、哪些客户端能连上它。所谓“客户端专属 ip 访问”,实际是指:只允许特定来源 ip 的客户端通过 tcp 远程访问 docker 守护进程,这是一种网络访问控制策略,不是给客户端分配 ip。
下面分三块讲清楚怎么做:
允许指定 IP 的客户端远程连接守护进程
Docker 默认只监听本地 Unix socket(/var/run/docker.sock),不开放 TCP 端口。要支持远程访问,需让 dockerd 监听 TCP,再配合防火墙或 iptables 限制来源。
-
编辑
/etc/docker/daemon.json,添加监听配置:{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }注意:
0.0.0.0:2375表示监听所有网卡,但后续要用 iptables 控制谁可连。 -
重启 Docker:
sudo systemctl daemon-reload sudo systemctl restart docker
-
用
iptables在DOCKER-USER链中放行指定 IP(例如只允许192.168.10.50):sudo iptables -I DOCKER-USER ! -s 192.168.10.50 -j DROP
这条规则必须加在
DOCKER-USER链(Docker 自动创建),且放在最前面,确保其他规则前就生效。 持久化 iptables 规则(不同系统方法不同,如 Ubuntu 可用
iptables-persistent,CentOS 可用iptables-save)。
不推荐直接绑定客户端 IP,但可间接实现“专属感”
客户端访问时,可通过以下方式体现“专属”:
- 给客户端机器配固定内网 IP(如 DHCP 保留或静态配置),再在上面运行
docker命令; - 客户端使用
--host tcp://192.168.10.100:2375显式连接服务端(IP 是服务端的,不是客户端的); - 服务端通过
iptables或主机防火墙(如ufw)只接受该客户端 IP 的连接请求。
安全提醒:别裸开 2375 端口
-
tcp://:2375无加密、无认证,等同于把 root 权限暴露在网络上; - 生产环境务必启用 TLS(配置
--tlsverify,--tlscacert,--tlscert,--tlskey); - 或改用 SSH 隧道转发:
ssh -L 2375:/var/run/docker.sock user@docker-host export DOCKER_HOST=unix:///tmp/docker.sock
这样客户端走本地 socket,流量经 SSH 加密,无需开 TCP 端口。
不复杂但容易忽略。


















