I’m running some tests with a LXC node because I want to run several containers to save memory and CPU as oppossed KVM VMs. After downloading some Linux Containers from Marketplaces (like CentOS-7, Alpine-3.16 and Debian_Sid), I have been able to run containers in my LXC node, but in all VMs, network is not working. From Sunstone, each container get an IP addres from my virtual network, but in LXC node, after running “lxc-attach $VM_ID”, I can check that container has not got IP.
Where is the problem?
Network configuration in my LXC node is like in other KVM nodes: an eth0 interface with no IP, connected to a linux bridge “br0” with an IP. However, I have some doubts about this bridge, because after installing “opennebula-node-lxc” package (my LXC node is running Ubuntu-20.04), automatically I get an “lxcbr0”. I have modified configuration in /etc/lxc/default to match with “br0”
root@nodo5:~# cat /etc/lxc/default.conf lxc.net.0.type = veth lxc.net.0.link = br0 #lxc.net.0.link = lxcbr0 lxc.net.0.flags = up #lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx
and, after seeing that network continues failing, I have modified /etc/default/lxc-net:
root@nodo5:/etc# cat default/lxc-net # This file is auto-generated by lxc.postinst if it does not # exist. Customizations will not be overridden. # Leave USE_LXC_BRIDGE as "true" if you want to use lxcbr0 for your # containers. Set to "false" if you'll use virbr0 or another existing # bridge, or mavlan to your host's NIC. USE_LXC_BRIDGE="false" #USE_LXC_BRIDGE="true" # If you change the LXC_BRIDGE to something other than lxcbr0, then # you will also need to update your /etc/lxc/default.conf as well as the # configuration (/var/lib/lxc/<container>/config) for any containers # already created using the default config to reflect the new bridge # name. # If you have the dnsmasq daemon installed, you'll also have to update # /etc/dnsmasq.d/lxc and restart the system wide dnsmasq daemon. LXC_BRIDGE="br0" #LXC_BRIDGE="lxcbr0" #LXC_ADDR="10.0.3.1" #LXC_NETMASK="255.255.255.0" #LXC_NETWORK="10.0.3.0/24" #LXC_DHCP_RANGE="10.0.3.2,10.0.3.254" #LXC_DHCP_MAX="253" # Uncomment the next line if you'd like to use a conf-file for the lxcbr0 # dnsmasq. For instance, you can use 'dhcp-host=mail1,10.0.3.100' to have # container 'mail1' always get ip address 10.0.3.100. #LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf # Uncomment the next line if you want lxcbr0's dnsmasq to resolve the .lxc # domain. You can then add "server=/lxc/10.0.3.1' (or your actual $LXC_ADDR) # to your system dnsmasq configuration file (normally /etc/dnsmasq.conf, # or /etc/NetworkManager/dnsmasq.d/lxc.conf on systems that use NetworkManager). # Once these changes are made, restart the lxc-net and network-manager services. # 'container1.lxc' will then resolve on your host. #LXC_DOMAIN="lxc"
Also, after some bad tests, I have stopped lxc-net daemon and, then, bridge “lxcbr0” has disappeared.
However, my containers don’t get IP address…
Also, I have noticed that containes are running as “root”. Is there any way to allow “oneadmin”?