虚拟机开机一直是启动docker,不启动ens33
时间: 2025-07-05 21:01:21 浏览: 16
### 虚拟机自动启动 Docker 导致 `ens33` 网络适配器无法启动解决方案
#### 一、分析问题原因
当虚拟机中的服务配置不当,特别是涉及网络资源的服务(如 Docker),可能会抢占或干扰其他依赖于相同资源的服务。Docker 默认创建的桥接网络可能会影响主机上的物理网卡配置。
#### 二、调整启动顺序和服务优先级
为了防止 Docker 的启动影响到 `ens33` 网络接口,在系统引导过程中适当延迟 Docker 的启动时间可以有效解决问题:
```bash
sudo systemctl edit docker.service
```
在打开的文件中加入如下内容来延缓 Docker 启动:
```ini
[Service]
ExecStartPre=/bin/sleep 10
```
这将使 Docker 在尝试启动前等待十秒钟,从而给 `ens33` 更多的时间完成初始化[^1]。
#### 三、修改 NetworkManager 设置
如果仍然存在连接不稳定的情况,则可能是由于 NetworkManager 和 Docker 使用相同的子网地址范围造成的冲突。可以通过编辑 `/etc/docker/daemon.json` 文件指定不同的 IP 地址池用于新创建的容器网络:
```json
{
"default-address-pools": [
{"base":"172.28.0.0/16", "size":24},
{"base":"172.29.0.0/16", "size":24}
]
}
```
保存更改并重启 Docker 服务以应用新的设置:
```bash
sudo systemctl restart docker
```
此操作有助于避免与现有局域网内的设备发生 IP 冲突[^2]。
#### 四、禁用不必要的 Docker 自动创建网络功能
对于不需要频繁创建多个独立网络环境的应用场景来说,关闭 Docker 对默认 bridge 网络的支持也是一种可行的方法。通过命令行参数传递给 dockerd 进程实现这一点:
```bash
sudo systemctl set-property --runtime docker Environment="DOCKER_OPTS=--iptables=false"
```
上述指令会在不改变原有配置的前提下临时生效;若要永久生效则需进一步修改相应的 systemd unit 文件[^3]。
#### 五、验证修复效果
最后一步是在实施以上措施之后重新启动计算机,并观察 `ens33` 是否能够正常获取 IP 地址以及互联网访问能力是否恢复正常。
阅读全文
相关推荐




















