插件窝 干货文章 docker启动暂用哪些端口

docker启动暂用哪些端口

端口 Docker 容器 宿主机 311    来源:    2025-04-28

Docker 在启动和运行时会使用多种端口,具体取决于配置的容器和服务。以下是主要分类和常见端口说明:


一、Docker 守护进程(Docker Daemon)默认端口

  1. 2375/TCP
    • 未加密的 Docker REST API 端口(不安全,仅限测试环境)。
  2. 2376/TCP
    • 加密的 Docker REST API 端口(默认使用 TLS 加密通信)。
  3. 4243/TCP
    • 旧版本 Docker 的监听端口(已逐步弃用)。

注意:生产环境应避免开放 2375 端口,需通过 TLS 加密(2376)或使用 SSH 隧道。


二、容器映射端口

Docker 容器通过 -p--publish 参数将容器端口绑定到宿主机端口,例如:

docker run -p 80:8080 nginx  # 宿主机80 → 容器8080
  • 动态端口范围:默认情况下,Docker 会随机选择宿主机的高端口(32768~60999)映射到容器端口(可通过 -p 8080 不指定宿主机端口实现)。

三、Docker 网络相关端口

  1. 53/UDP & 53/TCP
    • 如果容器使用自定义 DNS 配置(如 --dns 参数),可能占用 53 端口。
  2. 5000/TCP
    • Docker Registry(私有镜像仓库)的默认端口。
  3. 4789/UDP & 7946/TCP/UDP
    • Docker Swarm 模式中用于节点通信(Overlay 网络和节点发现)。

四、常见服务的默认容器端口

服务 容器内默认端口 常用协议
Nginx 80, 443 TCP
MySQL 3306 TCP
PostgreSQL 5432 TCP
Redis 6379 TCP
MongoDB 27017 TCP
Apache 80, 443 TCP

五、查看 Docker 占用的端口

  1. 查看宿主机已映射的端口

    docker ps --format "table {{.Names}}\t{{.Ports}}"
    

    ss -tulnp | grep docker
    
  2. 查看容器内部端口

    docker inspect -f '{{range $p, $conf := .NetworkSettings.Ports}}{{$p}} -> {{(index $conf 0).HostPort}}{{"\n"}}{{end}}' <容器名>
    

六、安全建议

  1. 避免暴露 Docker Daemon 端口(如 2375)到公网。
  2. 限制容器端口映射:仅开放必要的服务端口。
  3. 使用防火墙规则(如 iptables/ufw)控制访问。

通过以上分类,可以清晰了解 Docker 可能占用的端口范围。实际使用中,需根据具体容器和网络配置进一步检查。