vm虚拟机挂起后docker容器访问失败

前提,防火前全部关闭

1
2
3
4
# 关闭防火墙
systemctl stop firewalld
# 禁止开机自启
systemctl disable firewalld

解决方法

1. Docker 重启(治标不治本)

1
2
3
4
# 重启docker服务
systemctl restart docker
# docker -q 静默模式,只显示容器编号
docker start $(docker ps -qa)

2. 开启 ipv4 转发功能

1
2
3
4
5
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
systemctl restart network
# 查看
sysctl net.ipv4.ip_forward
# 出现 net.ipv4.ip_forward=1 即为成功

注意:这里如果报错可尝试将MAC地址添加到 ifcfg-ens33(网卡配置文件)中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看 ip
[root@cc ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:04:ca:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.138.10/24 brd 192.168.138.255 scope global noprefixroute ens33...

# 00:0c:29:04:ca:00 就是MAC地址
[root@cc ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 文件添加 HWADDR=00:0c:29:04:ca:00
# 重新启动
systemctl restart network

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

新建配置文件

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

在文件中添加 注意:这里文件不要强迫症用回车分号处断开

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

保存退出,重启服务

1
systemctl restart NetworkManager

经此三步后,虚拟机挂起后恢复,docker容器也可以正常访问

感谢阅读