Docker 容器连接
本章将介绍 Docker 容器之间的通信方式,包括网络连接、容器链接和服务发现。
容器通信方式概述
Docker 提供了多种容器间通信方式:
使用自定义网络(推荐)
创建自定义网络
容器加入网络
通过容器名通信
在同一自定义网络中,容器可以通过名称互相访问:
Docker 内置 DNS 服务器会自动将容器名解析为对应的 IP 地址。
实际示例:Web 应用 + 数据库
--link 方式(已废弃)
⚠️
--link是旧版 Docker 的容器连接方式,已被官方标记为废弃。建议使用自定义网络代替。
--link 的局限性:
- 只能单向连接
- 不支持跨主机通信
- 不支持动态服务发现
共享网络命名空间
多个容器可以共享同一个网络命名空间,它们将拥有相同的 IP 地址和端口空间:
这种模式类似于 Kubernetes 中 Pod 的网络模型。
容器与外部网络通信
端口映射
容器访问外部服务
容器默认可以访问外部网络。如果需要访问宿主机上的服务:
多容器通信实战
示例:Nginx + PHP-FPM + MySQL
网络管理命令
本章小结
容器连接是构建多容器应用的基础。推荐使用自定义 Docker 网络来实现容器间通信,它提供了自动 DNS 解析、网络隔离和灵活的管理能力。
关键要点:
- 优先使用自定义网络,避免使用已废弃的
--link - 同一网络中的容器可以通过容器名互相访问
- Docker 内置 DNS 自动解析容器名
- 端口映射用于容器与外部网络通信