Docker-compose networks

之前我们在 容器互联 那一节里重点说到过 如何通过

共享同一个第三容器的 网络,

来使用localhost访问其他容器的endpoint,其主要原理是 Linux network 的 namespace

然而这个问题到了 docker compose 中又不一样了

通过以下脚本启动两个容器,并且配置它们共享一个名为 unetwork的网络

version: '3'
services:
  utest1:
    image: nginx
    networks:
      - unetwork

  utest2:
    image:  ubuntu
    command: sleep infinity
    networks:
      - unetwork

networks:
  unetwork:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.100.0/24

可以看到

  1. 容器无法通过localhost访问,也就是说它们没有共享一个network namespace
  2. 检查 /etc/hosts 发现其中也没有像 link 那样把container name 写进 dns
  3. curl utest1:80 访问到了 nginx

docker compose 可以使用的网络多种多样

具体请参考

https://docs.docker.com/engine/reference/commandline/network_create/

如果没有特殊指定的话,这里生成的是 bridge 模式

Send a Message