跳到主要内容

常见端口与目录

常见端口​

Docker 自身端口​

Docker 守护进程和集群组件使用的端口,一般只在服务器运维时需要关注。

端口协议用途说明
2375TCPDocker API(明文 HTTP)远程调用 Docker API 的未加密端口,默认不开启
2376TCPDocker API(TLS 加密)远程调用 Docker API 的加密端口,生产环境应使用此端口
2377TCPSwarm 集群管理Swarm 模式管理节点间的通信与 raft 同步
7946TCP/UDP节点间通信Swarm 集群节点互相发现、心跳检测(gossip 协议)
4789UDPoverlay 网络Swarm overlay 网络的 VXLAN 数据面
切勿裸奔开放 2375 端口

2375 端口没有任何认证和加密,任何人连上它就等于拿到了这台机器 Docker 的 root 权限,可以直接创建特权容器、挂载宿主机目录、挖矿甚至控制整台服务器。公网暴露 2375 是常见的被入侵源头。需要远程管理 Docker 时,请改用 2376 + TLS 双向认证,或者干脆用 SSH 方式 docker -H ssh://user@host。

容器化部署常用服务默认端口​

日常用 Docker 部署服务时最常碰到的默认端口,docker run -p 和 Compose ports 映射的就是它们。

服务默认端口说明
Nginx80 / 443HTTP / HTTPS,Web 服务和反向代理入口
MySQL3306关系型数据库,33060 为 X Protocol 端口
Redis6379内存缓存 / 键值数据库
PostgreSQL5432关系型数据库
MongoDB27017文档型数据库,分片场景还有 27018、27019
RabbitMQ5672 / 15672AMQP 消息队列 / Web 管理台
Kafka9092消息队列 Broker 端口(9093 为 SASL/SSL 场景常用)
Elasticsearch9200 / 9300REST API / 集群节点内部通信
Prometheus9090监控指标采集与查询
Grafana3000监控可视化面板
Nacos8848注册中心 / 配置中心(2.x 还用到 9848、9849)
端口映射速记

宿主机端口与容器端口一致时容易记错顺序,格式固定是 -p 宿主机端口:容器端口。容器端口那一侧写服务自己的默认端口,宿主机那一侧才按需自定义,例如 -p 3307:3306 表示宿主机 3307 转发到容器的 MySQL 3306。

常见目录​

Linux 宿主机目录​

Docker 的镜像、容器、卷等数据默认都存在这里,磁盘满了、想清理或备份时找这些路径。

路径用途注意事项
/var/lib/dockerDocker 根数据目录,存放镜像、容器、卷等全部数据不要随意手动删改;迁移或换盘时可在 daemon 配置中修改 data-root
/var/lib/docker/overlay2overlay2 存储驱动下的镜像层与容器读写层占用磁盘的大头;通过 docker system prune 清理,不要手动删除
/var/lib/docker/volumes具名数据卷的实际存储位置备份数据卷就是备份这里对应目录的内容
/var/lib/docker/containers每个容器的元数据和日志目录容器日志在此按容器目录分开放,长期不清理可能撑爆磁盘
/etc/docker/daemon.jsonDocker 守护进程配置文件配置镜像加速、日志驱动、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 的虚拟机。