Modifying sysctl values inside lxc container
I have made several linux containers using the normal userspace tools (not docker), and I have been setting up a test environment.
I want to set up two containers to try out heartbeat, which requires the containers to bind to and ip address that is not yet configured, namely net.ipv4.ip_nonlocal_bind=1
Everytime I try it, it says something like this:
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
Also modifying the sysctl.conf file doesnt help. So i did some research, and aparently the guest container binds to the host's /proc/sys (which makes sense), so i modified the hosts value by adding the proper value to the hosts sysctl.conf and then i rebooted the host for good measure:
user@host:~$ sudo sysctl -A | grep -i nonlocal
net.ipv4.ip_nonlocal_bind = 1
as noted above, the host reflects the configuration that i want to see the in guest container, but even after rebooting, the container -still- shows the same problem.
How do i modify these values in the guest container, is it even possible?
Solution 1:
I had the same issue. You are right that it is related to LXC containers. I added
net.ipv4.ip_nonlocal_bind = 1
to my LXC host's sysctl.conf , then ran:
sysctl -p
(requires root access/sudo)
I did have to reboot the container for the change to take effect. Also, you will still get sysctl: cannot stat /proc/sys/net/ipv4/ip_nonlocal_bind: No such file or directory
on the container. If the functionality works, I am not entirely sure that it is necessary for the same command to be run on the guest container.
I can now access the container via the VIP or the defined IP.
Solution 2:
A very late update, but may help someone else.
Did you have /proc mounted within your container?
The error message is saying that it was not able to find a file in the /proc filesystem, which needs (for me) to be explicitly mounted to be available within an LXC container.