是否为 docker 网络设置 ip 范围/子网?哪个更好?

问题描述 投票:0回答:1

我使用 docker compose 在服务器上部署应用程序(前端/后端),并在 compose 文件中定义了两个网络,一个用于后端,一个用于前端。 这是我的问题哪个更好:

具有指定网络配置的:

...
networks:
 frontend:
  driver: bridge
  ipam:
   config:
   - subnet: 172.20.0.0/16
 backend:
  driver: bridge
  ipam:
   config:
   - subnet: 172.21.0.0/16
...

或者不指定网络配置:

...
networks:
 frontend:
 backend:
...

我不希望任何一个容器有静态IP,我只是使用容器/服务的名称在容器之间进行通信。

解释哪一个更好。

docker networking docker-compose docker-networking docker-network
1个回答
0
投票

您几乎不应该指定您显示的 IP 配置。 Docker 可以自动分配它,并且无法从 Docker 外部访问 IP 地址;你没有理由知道它们,如果你明确设置它们,你就不能使用它们。

对于几乎所有在 Compose 中运行的应用程序,您根本不需要设置

networks:
。 Compose 会自动为您创建一个名为
default
的网络,如果容器不包含
networks:
块,则会自动为其分配
networks: [default]
。对于以 Compose 为正确管理工具的任何情况(您可能只有不到十几个容器,所有容器都作为单个组合应用程序的一部分),单一共享网络就足够了。

唯一的例外是,如果您的主机网络环境也使用 Docker 喜欢使用的 172.16.0.0/12 中的相同保留网络。如果您的主机系统类似于 172.18.12.34/16,并且 Docker 希望在 172.18.0.0/16 上自动创建自己的网络,那么在这种情况下,您可能需要手动为

default 分配一个不冲突的 CIDR 块
网络

networks:
  default:
    ipam:
      config:
        - subnet: 172.19.0.0/16
Docker 文档中的

Compose 中的网络提供了有关 Compose 知道如何自行设置以及配置

default
网络的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.