networking(dhcpcd)在LXC下

我想用LXC启动一个Arch Linux实例。 几乎一切正常,但是在尝试使用dhcpcdconfiguration接口时遇到以下错误:

 # dhcpcd eth0 dhcpcd[4213]: version 5.6.4 starting dhcpcd[4213]: eth0: if_init: Read-only file system dhcpcd[4213]: eth0: interface not found or invalid 

这似乎是dhcpcd试图修改/proc/sys/net/ipv4/conf/eth0/promote_secondaries的直接结果:

 4210 open("/proc/sys/net/ipv4/conf/eth0/promote_secondaries", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EROFS (Read-only file system) 4210 writev(2, [{"dhcpcd[4210]: eth0: if_init: Read-only file system", 50}, {"\n", 1}], 2) = 51 

我可以使用bind安装在它周围:

 # touch /tmp/promote_secondaries # mount -o bind /tmp/promote_secondaries \ /proc/sys/net/ipv4/conf/eth0/promote_secondaries 

但是这似乎是一个可怕的想法。 有没有办法让dhcpcd在LXC下运行没有这个黑客? 为什么写入这个sysctl在LXC下不可用?

原因是,在启动时,你的容器在/ proc结构的顶部安装了一个只读的/ proc / sys。

内部容器:

 # grep proc /proc/mounts proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 proc /proc/sys proc ro,relatime 0 0 

你可以卸载(或挂载-o remount,rw),你的问题就会消失。

 umount /proc/sys 

只读/ proc / sys目录是为了保护(主机的整体稳定性)不受LXC容器(意外)的修改,所以上述声明确实意味着风险。

我也有同样的问题。 我不知道ro文件系统可以做些什么,但是为了解决dhcp问题,我使用dhclient而不是dhcpcd。 dhclient不会在/ proc / sys上写任何东西。