我已经使用普通用户空间工具(不是 docker)创建了几个 Linux 容器,并且一直在设置测试环境。
我想设置两个容器来尝试心跳,这需要容器绑定到一个尚未配置的ip地址,即net.ipv4.ip_nonlocal_bind = 1
每次我尝试它,它都会说这样的话:
user@lxc1:~$ sudo sysctl -w net.ipv4.ip_nonlocal_bind=1
sysctl: cannot stat /proc/sys/net/ipv4/ip_nonlocal_bind: No such file or directory
修改 sysctl.conf 文件也无济于事。所以我做了一些研究,显然客户容器绑定到主机的 /proc/sys(这是有道理的),所以我通过向主机 sysctl.conf 添加适当的值来修改主机值,然后我重新启动主机以获得更好的效果:
user@host:~$ sudo sysctl -A | grep -i nonlocal
net.ipv4.ip_nonlocal_bind = 1
如上所述,主机反映了我想要在客户容器中看到的配置,但即使重新启动后,容器仍然显示相同的问题。
我如何在客户容器中修改这些值,这可能吗?
答案1
我遇到了同样的问题。你说得对,这与 LXC 容器有关。我将其添加
net.ipv4.ip_nonlocal_bind = 1
到我的 LXC 主机的 sysctl.conf 中,然后运行:(
sysctl -p
需要 root 访问权限/sudo)
我确实必须重新启动容器才能使更改生效。此外,您仍将进入sysctl: cannot stat /proc/sys/net/ipv4/ip_nonlocal_bind: No such file or directory
容器。如果该功能有效,我不完全确定是否有必要在客户容器上运行相同的命令。
我现在可以通过 VIP 或定义的 IP 访问容器。
答案2
更新很晚,但可能会对其他人有所帮助。
您的容器内是否安装了 /proc?
错误消息表明无法在 /proc 文件系统中找到文件,而该文件(对我来说)需要明确安装才能在 LXC 容器内使用。