常见端口与目录
常见端口
Docker 自身端口
Docker 守护进程和集群组件使用的端口,一般只在服务器运维时需要关注。
| 端口 | 协议 | 用途 | 说明 |
|---|---|---|---|
| 2375 | TCP | Docker API(明文 HTTP) | 远程调用 Docker API 的未加密端口,默认不开启 |
| 2376 | TCP | Docker API(TLS 加密) | 远程调用 Docker API 的加密端口,生产环境应使用此端口 |
| 2377 | TCP | Swarm 集群管理 | Swarm 模式管理节点间的通信与 raft 同步 |
| 7946 | TCP/UDP | 节点间通信 | Swarm 集群节点互相发现、心跳检测(gossip 协议) |
| 4789 | UDP | overlay 网络 | Swarm overlay 网络的 VXLAN 数据面 |
2375 端口没有任何认证和加密,任何人连上它就等于拿到了这台机器 Docker 的 root 权限,可以直接创建特权容器、挂载宿主机目录、挖矿甚至控制整台服务器。公网暴露 2375 是常见的被入侵源头。需要远程管理 Docker 时,请改用 2376 + TLS 双向认证,或者干脆用 SSH 方式 docker -H ssh://user@host。
容器化部署常用服务默认端口
日常用 Docker 部署服务时最常碰到的默认端口,docker run -p 和 Compose ports 映射的就是它们。
| 服务 | 默认端口 | 说明 |
|---|---|---|
| Nginx | 80 / 443 | HTTP / HTTPS,Web 服务和反向代理入口 |
| MySQL | 3306 | 关系型数据库,33060 为 X Protocol 端口 |
| Redis | 6379 | 内存缓存 / 键值数据库 |
| PostgreSQL | 5432 | 关系型数据库 |
| MongoDB | 27017 | 文档型数据库,分片场景还有 27018、27019 |
| RabbitMQ | 5672 / 15672 | AMQP 消息队列 / Web 管理台 |
| Kafka | 9092 | 消息队列 Broker 端口(9093 为 SASL/SSL 场景常用) |
| Elasticsearch | 9200 / 9300 | REST API / 集群节点内部通信 |
| Prometheus | 9090 | 监控指标采集与查询 |
| Grafana | 3000 | 监控可视化面板 |
| Nacos | 8848 | 注册中心 / 配置中心(2.x 还用到 9848、9849) |
宿主机端口与容器端口一致时容易记错顺序,格式固定是 -p 宿主机端口:容器端口。容器端口那一侧写服务自己的默认端口,宿主机那一侧才按需自定义,例如 -p 3307:3306 表示宿主机 3307 转发到容器的 MySQL 3306。
常见目录
Linux 宿主机目录
Docker 的镜像、容器、卷等数据默认都存在这里,磁盘满了、想清理或备份时找这些路径。
| 路径 | 用途 | 注意事项 |
|---|---|---|
/var/lib/docker | Docker 根数据目录,存放镜像、容器、卷等全部数据 | 不要随意手动删改;迁移或换盘时可在 daemon 配置中修改 data-root |
/var/lib/docker/overlay2 | overlay2 存储驱动下的镜像层与容器读写层 | 占用磁盘的大头;通过 docker system prune 清理,不要手动删除 |
/var/lib/docker/volumes | 具名数据卷的实际存储位置 | 备份数据卷就是备份这里对应目录的内容 |
/var/lib/docker/containers | 每个容器的元数据和日志目录 | 容器日志在此按容器目录分开放,长期不清理可能撑爆磁盘 |
/etc/docker/daemon.json | Docker 守护进程配置文件 | 配置镜像加速、日志驱动、data-root 等;改完需 systemctl restart docker 生效 |
~/.docker/config.json | 当前用户的 Docker 客户端配置 | 存放 docker login 后的仓库凭据(可能是 base64 明文)和 CLI 配置 |
容器日志路径
JSON 日志驱动(默认)下,容器标准输出会写到:
/var/lib/docker/containers/容器ID/容器ID-json.log
其中 容器ID 是容器的完整长 ID。排障时除了 docker logs,也可以直接 tail -f 这个文件。
-json.log 默认无限增长,生产环境建议在 daemon.json 中配置 log-opts 的 max-size 和 max-file,或换用其他日志驱动,避免磁盘被日志打满。
macOS / Windows 的特殊情况
Docker Desktop 在 macOS 和 Windows 上是跑在虚拟机(LinuxKit VM)里的,/var/lib/docker 等路径都在该虚拟机内部,宿主机上直接找不到;宿主机上只有 ~/.docker/config.json 这类客户端配置是真实存在的。需要查看 VM 内部文件时,得先进入 Docker Desktop 的虚拟机。