容器之间的通信
Whisper Lv5

1. 通过宿主机网络通信

1
2
# 容器共享宿主机网络命名空间
docker run --network=host nginx

原理:容器直接使用宿主机的IP和端口,没有网络隔离。
使用场景

  • 性能要求极高的场景(无NAT转换)
  • 需要直接绑定主机端口的应用
  • 注意:存在端口冲突风险

2. 默认桥接网络

1
2
3
# Docker自动创建docker0网桥
docker run -d --name web nginx
docker run -it --name client alpine ping web

问题:默认桥接网络下,容器只能通过IP访问,不能通过容器名访问(需要使用–link)

3. 用户自定义桥接网络

1
2
3
4
5
6
7
8
9
# 创建自定义网络
docker network create my-network

# 将容器连接到网络
docker run -d --name web --network my-network nginx
docker run -d --name db --network my-network redis

# 容器间可以通过容器名直接通信
docker exec web ping db # 可以解析db为IP