如何在容器启动时将两个(或更多)网络连接到容器中?

42次阅读
没有评论

问题描述

在尝试将容器连接到两个网络时,发现使用--network选项指定多个网络并不会引发错误,但实际上容器只会连接到最后一个指定的网络。用户想知道如何在容器启动时将两个(或更多)网络连接到容器中。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

你不能使用--network选项来同时连接多个网络。你需要依赖于docker network connect命令来实现。因此,如果你希望在容器启动时多个网络接口都可用,你需要分为三个步骤:
1. 创建容器。
2. 连接额外的网络。
3. 最后运行容器。
以下是具体步骤:
1. 创建一个容器,并将其连接到一个用户定义的网络:

docker create --name app3 \
              --network back-end \
              ${IMAGE}
  1. 连接其他的网络:
docker network connect front-end app3
  1. 启动容器:
docker start app3

通过以上步骤,你可以在容器启动时连接多个网络。你可以使用docker exec命令来验证容器的网络连接情况。

docker exec -it app3 ip addr show

方案2

不推荐这种方法,因为它会将容器连接到默认的桥接网络,可能会引起一些问题。
另一种方法是在创建容器时不指定--network选项,这样容器会自动连接到默认的桥接网络。然后,使用docker network connect命令将容器连接到其他用户定义的网络。但这种方法存在一个问题,就是容器会同时连接到默认的桥接网络和用户定义的网络,这可能不是你想要的结果。
以下是具体步骤:
1. 创建一个容器,使用默认的网络设置:

docker create --name app3 \
              ${IMAGE}
  1. 连接用户定义的桥接网络:
docker network connect back-end app3
docker network connect front-end app3
  1. 启动容器:
docker start app3

请注意,这种方法会将容器连接到默认的桥接网络,这可能会引起一些问题,特别是当你使用用户定义的网络时。因此,我们建议使用方案1来确保容器在启动时连接到所需的网络。

正文完