问题描述
容器服务使用的VPC网络,在容器内不能访问同一VPC网络中的ECS实例和RDS实例。在容器中Ping实例地址,系统显示类似如下。
问题原因
Docker使用的网段和VPC网段冲突。
解决方案
问题分析
登录ECS实例,执行如下命令,查看路由。
route -n
系统显示类似如下,确认docker_gwbrideg使用网段x.x.0.0,和VPC网段x.x.200.0/24的路由冲突,导致容器内不能正常访问到VPC的网段。
解决方法
目前有下面3种解决办法。
执行如下命令,找到使用docker_gwbridge的容器。
docker network inspect docker_gwbridge | grep gateway | cut -d '_' -f 2 | cut -d '"' -f 1
执行如下命令,停止容器。
docker stop [$Container_ID]
注:[$Container_ID]为容器ID。
执行如下命令,重建docker_gwbridge网络。
docker network rm docker_gwbridgedocker network create --subnet [$Net_IP] --opt com.docker.network.bridge.name=docker_gwbridge --opt com.docker.network.bridge.enable_icc=false --opt com.docker.network.bridge.enable_ip_masquerade=true docker_gwbridge
注:[$Net_IP]为自定义不冲突的docker_gwbridge网段。
执行如下命令,启动容器。
docker start [$Container_ID]
通过占用Docker的网段,避免docker_gwbridge选择冲突的网段。
执行如下命令,使docker_gwbridge占用Docker的网段。
service docker stop; rm -fr /var/lib/docker/network/; ip link del docker_gwbridge; ip route add 172.19.0.0/16 dev eth0; service docker start
重新创建集群
适用于
在文档使用中是否遇到以下问题
更多建议
匿名提交