我的一些Docker容器会定期失去Internet连接。对于某些容器,问题似乎根本不会发生;而对于其他容器,它会间歇性地发生,其中一些更容易受到影响。值得注意的是,主机服务器(运行Ubuntu的HP Proliant Gen 10机器)的Internet连接完全正常,并且为了恢复容器的Internet连接,我只需重启容器本身而不是整个Docker守护程序。这不是一个很大的问题,但确实很烦人。有任何解决此问题的想法吗?
我的一些Docker容器会定期失去Internet连接。对于某些容器,问题似乎根本不会发生;而对于其他容器,它会间歇性地发生,其中一些更容易受到影响。值得注意的是,主机服务器(运行Ubuntu的HP Proliant Gen 10机器)的Internet连接完全正常,并且为了恢复容器的Internet连接,我只需重启容器本身而不是整个Docker守护程序。这不是一个很大的问题,但确实很烦人。有任何解决此问题的想法吗?
interface=sudo docker ps | grep sonarr | awk '{print $1 " bash"}' | xargs bash -c 'sudo docker exec $0 netstat' | awk '/(utun0:|en0)/ {print $1}'
if ["$interface" = ""]; then
cd /volume1/docker; docker-compose stop; sleep 10; docker-compose start;
fi
这只是一个假设,你的Ubuntu构建是否在服务器上设置了静态IP地址?还是通过dhcpcd
守护程序自动配置所有网络接口的DHCP?
可能是您的Ubuntu解决方案定期自动配置所有网络接口,并且动态IP地址的丢失导致容器失去Internet连接,因为它们可能已经缓存了主机IP地址。因此,当主机动态更新分配的IP地址时,Docker将无法连接。
如果是动态的,请建议设置静态IP并查看您的情况如何?
更新您的/etc/dhcp/dhclient.conf
或/etc/dhcpd.conf
以添加静态IP
您可以使用Docker的重启策略,了解更多信息请参考Docker Restart Concept。如果您直接运行它,我建议您使用此标志--restart=unless-stopped
。如果您正在使用docker-compose,在compose.yml文件中有一个restart: unless-stopped
属性。