在京东云服务器上使用 Docker 时,是否需要开放安全组端口取决于你的具体应用场景。Docker 本身运行在宿主机上,默认使用本地 Unix 套接字(/var/run/docker.sock)进行通信,不需要对外暴露端口。但如果你有以下需求,则需要在安全组中开启相应的端口。
✅ 一、Docker 默认运行所需(无需额外开放端口)
- Docker 守护进程默认监听本地套接字,不监听网络端口。
- 只要你在服务器本地通过
docker命令操作,无需在安全组中开放任何端口。
⚠️ 注意:不要随意将 Docker 守护进程暴露在公网(如绑定到
0.0.0.0:2375或2376),否则可能导致服务器被远程控制或X_X攻击。
✅ 二、需要开放安全组端口的常见场景
| 使用场景 | 所需端口 | 协议 | 说明 |
|---|---|---|---|
| 运行 Web 服务(如 Nginx、Apache) | 80(HTTP)443(HTTPS) |
TCP | 访问网站必须开放 |
| SSH 连接服务器管理 | 22 |
TCP | 管理服务器必备 |
| 自定义应用端口(如 Node.js、Spring Boot) | 如 3000, 8080, 9000 等 |
TCP | 根据应用配置开放 |
| Docker Registry(私有镜像仓库) | 5000 |
TCP | 若搭建私有 registry 需开放 |
| Docker Swarm 模式集群通信 | 2377(管理端口)7946(节点通信)4789(overlay 网络) |
TCP/UDP | 仅用于多主机集群 |
| 远程 Docker API(不推荐公网开放) | 2375(非加密)2376(TLS 加密) |
TCP | 仅建议内网或通过 VPC 访问 |
| 数据库容器对外提供服务 | 如 MySQL 3306、Redis 6379、MongoDB 27017 |
TCP | 仅建议限制 IP 或走内网 |
✅ 三、推荐的安全组配置(最小化原则)
建议只开放必要的端口,并限制源 IP:
| 端口 | 来源 IP | 用途 |
|---|---|---|
22 |
你的办公/家庭公网 IP | SSH 登录 |
80 |
0.0.0.0/0 |
公开访问 HTTP |
443 |
0.0.0.0/0 |
公开访问 HTTPS |
3000-3010 |
你信任的 IP 段 | 自定义应用调试 |
5000 |
内网 IP 或特定 IP | 私有镜像仓库 |
🔐 强烈建议:
- 不要开放
2375到公网;- 数据库类端口(如
3306)应限制为内网或跳板机访问;- 使用 VPC 和子网隔离不同服务。
✅ 四、Docker 网络与端口映射说明
当你使用如下命令启动容器时:
docker run -d -p 8080:80 nginx
-p 8080:80表示将宿主机的8080端口映射到容器的80端口。- 此时你需要在 京东云安全组中开放宿主机的
8080端口,才能从网络访问。
✅ 总结:你需要做什么?
- 基础运维:开放
22(SSH)、80、443(Web 服务)。 - 自定义服务:按需开放对应端口(如
3000,8080)。 - 避免风险:不要暴露 Docker API(
2375/2376)到公网。 - 集群部署:如用 Swarm,再考虑
2377、7946、4789。 - 最小权限:安全组遵循“最小开放”原则,限制源 IP。
如有具体应用(如部署 WordPress、Nginx、Node.js、MySQL),可以告诉我,我可以给出更精确的端口建议。
CCLOUD博客