端口映射与服务发现
Docker 容器通常运行在隔离的网络环境中,端口映射与服务发现机制保证容器能够与外部或集群中的其他容器通信。
1. 端口映射(Port Mapping)
将宿主机端口映射到容器端口,使外部可以访问容器服务:
docker run -d -p 8080:80 nginx
`
8080:宿主机端口80:容器内部端口- 可映射单个端口或范围:
docker run -d -p 5000-5005:80-85 myapp
1.1 映射协议
- 默认 TCP,可显式指定:
docker run -d -p 8080:80/tcp myapp
docker run -d -p 8080:80/udp myapp
2. 容器间通信
- 同一自定义网络内容器可通过容器名称访问:
docker network create mynet
docker run -d --name db --network mynet mysql
docker run -d --name web --network mynet mywebapp
docker exec web ping db
3. 服务发现(Service Discovery)
- Docker 内置 DNS 支持容器名称解析
- Swarm 或 Kubernetes 可自动注册服务,容器间通过服务名访问
- Swarm 服务示例:
docker service create --name web --replicas 3 -p 8080:80 nginx
docker service ls
- 内部容器可通过服务名访问负载均衡后的实例
4. 负载均衡与健康检查
- Swarm 自动分配容器请求,实现服务负载均衡
- 配置健康检查保证服务可用:
docker service create \
--name web \
--replicas 3 \
--publish 8080:80 \
--health-cmd="curl -f http://localhost/ || exit 1" \
nginx
5. 最佳实践
- 使用自定义网络简化容器名称解析
- 对外暴露端口时避免使用默认
latest或常用端口 - 在集群环境中结合健康检查和负载均衡提高可用性
- 利用 DNS 名称而非 IP,保证容器迁移或重启时通信稳定
端口映射与服务发现是 Docker 网络管理的核心,通过合理配置可实现容器间高效通信和外部访问。
相关内容
- 构建自定义 Registry 本章节介绍如何搭建和管理 Docker 私有 Registry,包括部署自定义 Registry、配置存储与访问权限、镜像推送与拉取流程,以及安全与备份策略,满...
- 与 Kubernetes 的比较与协作 本章节对比 Docker 与 Kubernetes 的异同点,并讲解两者的协作方式,包括容器管理、编排、服务发现、部署流程和最佳实践,帮助理解容器生态系统中的应...
- Rootless Docker 与安全边界 本章节介绍 Rootless Docker 的使用方法及安全边界管理,包括非 root 容器运行原理、配置步骤、权限限制和网络隔离策略,提升容器安全性并降低宿主...
- 常用命令速查表 本章节提供 Docker 常用命令速查表,包括镜像管理、容器操作、网络配置、卷管理、日志查看及调试命令,帮助开发者快速查找和使用 Docker 命令,提高容器管...
- 参考文档与学习资源 本章节整理 Docker 官方文档、社区资源、教程和示例项目,帮助开发者系统学习 Docker 技术,掌握容器化应用的构建、运行、管理和优化方法。
- 示例项目与练习 本章节提供 Docker 示例项目和练习,包括容器化应用部署、Docker Compose 多服务编排、镜像优化、网络配置和存储管理,帮助开发者通过实战加深对...