Docker容器无法连接多网络端点问题求助
解决Docker容器连接多网络时的报错问题
嘿,我来帮你搞定这个Docker的报错问题!你遇到的Container cannot be connected to network endpoints错误,核心原因很简单:Docker的docker run命令不允许你用多次--network参数在启动容器时同时连接多个自定义网络。另外我注意到你之前的命令顺序还有个小问题——你在创建test-net网络之前就尝试启动c3连接它,这一步其实也会失败,不过咱们先重点解决c5的多网络互通需求。
正确实现容器连接多网络的步骤
1. 先正常启动容器(选一个初始网络,或者用默认的docker0)
你可以先让c5以默认的docker0网络启动,命令如下:
docker container run --name c5 -d alpine:latest ping 127.0.0.1
或者你也可以指定其中一个自定义网络作为初始网络,比如先连sample-net:
docker container run --name c5 -d --network sample-net alpine:latest ping 127.0.0.1
2. 用docker network connect逐个连接剩余网络
容器启动后,再用这个命令分别把它连接到test-net和docker0(如果初始没选的话):
# 连接到test-net网络 docker network connect test-net c5 # 如果初始启动时没连docker0,再执行这条(默认启动的容器本来就在docker0里,所以可能不需要) docker network connect docker0 c5
3. 验证网络是否连接成功
你可以进入c5容器里查看网卡信息,确认所有网络都连上了:
docker exec -it c5 sh # 在容器内执行下面的命令看网卡 ip addr
这时候你会看到对应每个网络的网卡(比如eth0是初始网络,eth1对应test-net,eth2对应docker0),说明已经成功连接多个网络了。
顺便修正你之前的命令顺序问题
你之前先启动c3再创建test-net,这肯定会报错,正确的顺序应该是先建网络再启动容器:
# 先创建所有需要的网络 docker network create --driver bridge sample-net docker network create --driver bridge --subnet "10.1.0.0/16" test-net # 再启动需要的容器 docker container run --name c3 -d --network test-net alpine:latest ping 127.0.0.1 docker container run --name c4 -d --network test-net alpine:latest ping 127.0.0.1
这样操作之后,c5就能同时接入sample-net、test-net和docker0,自然就能和其他在这些网络里的容器互通啦!
内容的提问来源于stack exchange,提问作者Nag
相关产品推荐
相关产品推荐

