插件窝 干货文章 Linux下的Docker容器网络:如何设置容器间的网络连接和通信?

Linux下的Docker容器网络:如何设置容器间的网络连接和通信?

Docker 容器 网络 network 425    来源:    2025-04-13

Linux下Docker容器网络设置指南

一、Docker网络基础

Docker提供了多种网络模式来管理容器间的通信:

  1. bridge:默认网络模式,创建私有内部网络
  2. host:容器直接使用主机网络
  3. none:无网络连接
  4. overlay:用于Swarm集群的多主机网络
  5. macvlan:为容器分配MAC地址,使其显示为物理设备

二、容器间通信设置方法

1. 使用默认bridge网络

# 创建两个容器
docker run -d --name container1 nginx
docker run -d --name container2 nginx

# 在container2中ping container1
docker exec -it container2 ping container1

注意:默认bridge网络需要通过IP地址通信,除非使用--link(已弃用)

2. 创建自定义bridge网络

# 创建自定义网络
docker network create my-network

# 将容器连接到自定义网络
docker run -d --name container3 --network my-network nginx
docker run -d --name container4 --network my-network nginx

# 现在容器可以通过名称互相访问
docker exec -it container4 ping container3

3. 使用host网络模式

# 容器使用主机网络
docker run -d --name container5 --network host nginx

4. 容器间端口映射

# 将容器端口映射到主机
docker run -d --name container6 -p 8080:80 nginx

# 其他容器可通过主机IP访问

三、高级网络配置

1. 配置DNS

# 创建网络时指定DNS
docker network create --driver=bridge --subnet=192.168.100.0/24 --gateway=192.168.100.1 --dns=8.8.8.8 my-dns-network

2. 设置静态IP

docker network create --subnet=172.20.0.0/16 my-static-ip-net

docker run -d --net my-static-ip-net --ip 172.20.0.10 --name static-container nginx

3. 多容器网络连接

# 将现有容器连接到网络
docker network connect my-network existing-container

四、网络诊断工具

  1. 查看网络列表:docker network ls
  2. 检查网络详情:docker network inspect [NETWORK_NAME]
  3. 查看容器网络信息:docker inspect [CONTAINER_NAME]
  4. 测试连接:docker exec [CONTAINER] ping [TARGET]
  5. 查看路由:docker exec [CONTAINER] ip route

五、安全注意事项

  1. 限制容器间通信:--icc=false
  2. 使用网络策略限制访问
  3. 避免使用--privileged模式
  4. 定期更新Docker版本以获得最新的安全补丁

通过以上配置,您可以灵活地管理Docker容器间的网络连接和通信需求。