如何在 LXC 容器启动崩溃后清理网络接口

如何在 LXC 容器启动崩溃后清理网络接口

今天我修改了一个 LXC 容器以添加额外的“绑定挂载”,但忘记在容器根文件系统中创建挂载目录。

结果容器启动失败,并使系统处于奇怪的状态。

该初创公司已经为容器创建了“veth”接口,并将我使用“phys”方法绑定到容器的另一个接口从系统“可预测接口名称”名称 ensXfY 重命名为容器名称 eth1。

但事故发生后并没有解决这个问题。

因此,即使修复了根本问题,容器仍然无法启动,因为主机网络混乱。

我在运行 LXC 软件包 2.0.11-0ubuntu1~16.04.3 的 Ubuntu 16.04 上发生了这种情况,但它也可能会影响其他 Linux 发行版上的某些其他版本的 LXC。

答案1

这产生了两个独立的问题 - 陈旧的“veth”对和物理接口未正确命名。

我通过结合这篇文章的一些内容解决了这个问题:

https://stackoverflow.com/questions/31989426/how-to-identify-orphaned-veth-interfaces-and-how-to-delete-them

对于“veth”问题,以及这篇文章:

CentOS 7 - 无需重新启动即可重命名网络接口

用于重命名网络接口。

我最终使用的两个命令最终是:

ip link delete vethXYZ
ip link set eth1 name ensXfY

修复真正的原始问题(通过创建挂载点目录)并运行这些命令后,我就能够正确启动容器。

相关内容