温馨提示×

docker容器间通信ubuntu如何配置

小樊
56
2025-08-29 17:44:41
栏目: 智能运维

在Ubuntu上配置Docker容器间通信,可根据需求选择不同网络模式,以下是具体方法及对应命令:

1. 默认桥接网络(适合单机简单场景)

  • 特点:Docker默认创建bridge网络,容器通过虚拟网桥通信,需通过IP或容器名访问。
  • 配置步骤
    1. 查看默认网络:docker network ls
    2. 运行容器并加入默认网络(无需额外参数,默认使用bridge):
      docker run -d --name container1 ubuntu  
      docker run -d --name container2 ubuntu  
      
    3. 通过容器IP或名称通信:
      • 进入容器查看IP:docker exec -it container1 bash,然后执行ip addr
      • 使用容器名通信(需先配置DNS,如修改/etc/docker/daemon.json)。

2. 自定义桥接网络(推荐,灵活控制)

  • 特点:可自定义子网、网关,支持静态IP,适合多容器单机场景。
  • 配置步骤
    1. 创建自定义桥接网络:
      docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 my_bridge  
      
    2. 运行容器并加入自定义网络:
      docker run -d --name container1 --network my_bridge --ip 172.18.0.10 ubuntu  
      docker run -d --name container2 --network my_bridge --ip 172.18.0.20 ubuntu  
      
    3. 验证通信:
      docker exec -it container1 ping 172.18.0.20  # 通过IP通信  
      docker exec -it container1 ping container2  # 通过容器名通信(需配置DNS)  
      

3. 主机网络(高性能场景)

  • 特点:容器直接使用宿主机网络栈,无NAT转换,性能最优,但隔离性差。
  • 配置步骤
    docker run -d --network host --name container1 nginx  
    docker run -d --network host --name container2 nginx  
    
    容器间可直接通过localhost或宿主机IP+端口访问。

4. Overlay网络(跨主机通信)

  • 特点:支持跨主机容器通信,需配合Docker Swarm或Kubernetes,适合分布式场景。
  • 配置步骤
    1. 初始化Swarm(需至少2台主机):
      docker swarm init --advertise-addr <主机IP>  
      
    2. 创建Overlay网络:
      docker network create --driver overlay --attachable my_overlay  
      
    3. 在Swarm集群中运行容器并加入Overlay网络:
      docker service create --name web --network my_overlay nginx  
      

5. 使用Docker Compose(简化多容器配置)

  • 适用场景:快速配置多容器应用的网络。
  • 示例:创建docker-compose.yml文件:
    version: '3'  
    services:  
      web:  
        image: nginx  
        networks:  
          - my_network  
      db:  
        image: mysql  
        networks:  
          - my_network  
    networks:  
      my_network:  
        driver: bridge  
        ipam:  
          config:  
            - subnet: 192.168.1.0/24  
              gateway: 192.168.1.1  
    
    启动服务:docker-compose up -d

注意事项

  • 网络隔离:不同网络模式的容器默认无法互通,需通过docker network connect手动连接(仅限部分模式)。
  • 安全性:避免使用host模式处理敏感数据,优先选择bridgeoverlay并配置防火墙规则。
  • 跨主机通信:Overlay网络需依赖Swarm集群,确保主机间网络可达。

根据实际需求选择模式,单机开发推荐bridge自定义桥接,分布式场景选择overlay

0