问题描述

最近在docker中部署各种容器时,遇到一个问题:每次挂起虚拟机恢复后,就无法连接docker中的容器了,必须要重新启动容器才能正常连接,非常麻烦,查阅各种资料后,解决方法如下

1、关闭防火墙

由于我是学习环境,所以直接关闭防火墙了,这样就不用每次部署容器时一个个去开放端口,这一步根据自己需要来

# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

2、修改ipv4转发状态

首先打开配置文件

vi /usr/lib/sysctl.d/00-system.conf

在这里插入图片描述
添加如下信息

net.ipv4.ip_forward = 1

保存退出后,重启网络服务

systemctl restart network

之后查看ipv4转发状态

sysctl net.ipv4.ip_forward

显示 net.ipv4.ip_forward=1 则成功
在这里插入图片描述

3、将docker的网络接口设置为不被NetworkManager管理

这一步参考了StackOverflow上的一篇帖子:

https://stackoverflow.com/questions/57874055/cant-connect-to-docker-after-resuming-vm

新建一个配置文件

vi /etc/NetworkManager/conf.d/10-unmanage-docker-interfaces.conf

在文件中添加如下内容

[keyfile]
unmanaged-devices=interface-name:docker*;interface-name:veth*;interface-name:br-*;interface-name:vmnet*;interface-name:vboxnet*

保存退出后,重启NetworkManager

systemctl restart NetworkManager

完成上面三步后,就算挂起虚拟机重连,也能正常访问docker中的容器了

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐