Docker 远程访问完整配置教程
以下是配置 Docker 支持远程访问的完整教程,包括参数说明、配置修改、云服务器安全组设置、主机防火墙配置,以及验证远程访问的详细步骤。
1. 理解 -H fd:// 参数的作用(理解了以后容易理解后面的操作)
 
-H 参数用于指定 Docker 守护进程的监听方式(监听“门口”)。可以配置 Docker 监听:
- Unix 套接字:如 unix:///var/run/docker.sock(本地通信)。
- TCP 地址:如 tcp://0.0.0.0:2375(远程访问)。
- 文件描述符(fd://):让 Docker 通过 systemd 管理监听方式。
什么是 -H fd://?
 
- fd://表示 File Descriptor(文件描述符)。
- Docker 不直接监听具体地址或端口,而是通过 systemd 提供的文件描述符监听。
- systemd 通常默认让 Docker 使用本地 Unix 套接字 unix:///var/run/docker.sock。
形象比喻
-  没有 -H fd://时:
 Docker 自己决定监听哪些“门”,比如监听本地套接字或远程端口。你明确告诉它:“去盯住这扇门,比如 2375 端口!” 
-  使用 -H fd://时:
 Docker 把选择监听方式的任务交给 systemd。Docker 对 systemd 说:“systemd,你安排门,我负责听谁敲门!” 
2. 修改 Docker 配置
2.1 修改 docker.service 文件
 
-  编辑 Docker 服务文件: bashsudo nano /usr/lib/systemd/system/docker.service
-  查找以下行: bashExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
-  修改为: bashExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock这里移除了 -H fd://参数,让 Docker 不再依赖 systemd 的监听方式。
-  保存并退出。 
2.2 配置 daemon.json 文件
 
通过 /etc/docker/daemon.json 配置 Docker 监听本地和远程连接。
-  编辑 daemon.json文件:bashsudo nano /etc/docker/daemon.json
-  添加以下内容:(registry 是docker加速器,在国外可以不管这个) json{"registry-mirrors": ["https://docker.1ms.run","https://docker.unsee.tech"],"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }
-  保存并退出。 
2.3 重新加载并重启 Docker 服务
bashsudo systemctl daemon-reload
sudo systemctl restart docker
3. 配置云服务器安全组
对于云服务器(如阿里云、AWS、腾讯云),需要在安全组中开放 Docker 的远程访问端口(TCP 2375)。
- 登录云服务提供商管理控制台。
- 找到实例的 安全组 配置。
- 添加一条规则: - 协议:TCP
- 端口范围:2375
- 来源:根据需求设置(可选 0.0.0.0/0或特定 IP 段)。
 
- 保存并应用规则。
4. 配置主机防火墙
如果服务器启用了防火墙(如 firewalld),需要显式开放 TCP 2375 端口。
4.1 检查防火墙状态
bashsudo systemctl status firewalld
如果防火墙未启用,可跳过本节。
4.2 开放 2375 端口
bashsudo firewall-cmd --zone=public --add-port=2375/tcp --permanent
4.3 重新加载防火墙
bashsudo firewall-cmd --reload
4.4 验证防火墙规则
bashsudo firewall-cmd --list-ports
确认 2375/tcp 端口已在列表中。
5. 验证远程访问
5.1 使用浏览器验证
在浏览器地址栏输入以下 URL:
http://<服务器IP>:2375/version
如果配置正确,会返回类似以下的 JSON 数据:
 粘个图,嘿嘿
 
5.2 使用 Docker CLI 验证
在远程客户端执行以下命令:
bashdocker -H tcp://<服务器IP>:2375 info
如果配置正确,将返回 Docker 服务器的相关信息。
6. 安全性注意事项(没试过可选)
-  默认配置无加密或认证: - Docker 的远程访问(TCP 2375)默认不启用加密或认证机制,存在安全隐患。
- 开放 2375 后,任何访问到该端口的用户都能完全控制 Docker 守护进程。
 
-  推荐的安全措施: -  使用 SSH 隧道:不直接开放 2375,而是通过 SSH 隧道访问 Docker: bashssh -L 2375:localhost:2375 user@<服务器IP>然后本地访问: bashdocker -H tcp://localhost:2375 info
-  启用 TLS 加密: 为 Docker 配置 TLS,确保通信加密且客户端必须认证。具体配置可以参考 Docker 官方文档。 
-  限制来源 IP:通过安全组或防火墙仅允许可信 IP 访问 2375。 
 
-  
总结
通过本教程,完成 Docker 的远程访问配置,包括参数调整、安全组与防火墙配置,以及远程访问的验证。