Installing Calculate in LXC
Updated 13 June 2023
Installing the required packages
To continue, you need to install app-containers/lxc:
emerge -a app-containers/lxc
Installing Calculate into a container
To install Calculate Linux Container, run:
Downloading the image index Downloading the rootfs Downloading the metadata The image cache is now ready Unpacking the rootfs --- You just created a Calculate container (release=23, arch=amd64, variant=default) To enable sshd, run: rc-update add sshd For security reason, container images ship without user accounts and without a root password. Use lxc-attach or chroot directly into the rootfs to set a root password or create user accounts.
Replace calculate with any name you want for your container. The application will automatically fetch the container on the cloud and install it. The installed containers are stored in the /var/calculate/lxc/ directory.
Note
In subsequent commands and paths, use the container name you replaced calculate with.
Network configuration
Network configuration of the host computer
To configure the network in a LXC container, you will need to configure the network bridge on the host. To do this, select one of the two configuration options:
- If the host computer has multiple IP addresses - for example, if you will run the container on a desktop operating in the local network and receiving the IP via DHCP - you can configure the network by [using shared network containers] (network#ispolzovanie_obshchei_seti).
- If the host computer has a single IP address - for example, when running a container on a VPS or dedicated server - you can configure [network address translation] (network#transliatsiia_ip-adresov) via a single interface.
Network configuration of the container
Configure the network for your container:
/var/calculate/lxc/calculate/config
# network type if bridge is used lxc.net.0.type = veth # start the network at system start lxc.net.0.flags = up # interface inside the container lxc.net.0.name = eth0 # bridge to be used by the virtual interface lxc.net.0.link = br0 # random MAC for the network interface of the container (first number must be even) lxc.net.0.hwaddr = 02:03:04:05:06:07
Replace the MAC address, 02:03:04:05:06:07. Please note that the first number must be even (addresses with an odd first number are multicast and cannot be assigned).
Start the container
To start the container, run:
lxc-start calculate
Make sure the container is up and running:
Name: calculate State: RUNNING PID: 25107 CPU use: 3.03 seconds BlkIO use: 51.98 MiB Memory use: 61.21 MiB KMem use: 4.39 MiB Link: vethXLWII2 TX bytes: 516 bytes RX bytes: 516 bytes Total bytes: 1.01 KiB
Add the container to autostart:
ln -sf /etc/init.d/lxc /etc/init.d/lxc.calculate
rc-update add lxc.calculate
In order for the system in the container to start correctly once the network is up, create a file containing the following rule:
/etc/conf.d/lxc
rc_want="net.br0"
Configuring system in the container
Connect to the container to make further modifications or adjustments.
lxc-attach calculate
You can also edit settings in the container from the host computer, using the following syntax:
lxc-attach [HTML_REMOVED] -- [HTML_REMOVED]
Network
Network configuration when using a shared network
If you are using a shared network (with local IPs), you can configure the network either with DHCP or by specifying an available IP address and a router IP address.
When using a DHCP server on a local network, you simply have to run the following:
/etc/init.d/net.eth0 start
rc-update add net.eth0
Network configuration when using NAT
If using [network address translation (NAT)] (network#transliatsiia_ip-adresov), edit the host settings accordingly:
cl-setup-network --iface eth0:192.168.11.2:24 --route default:192.168.11.1 --dns 8.8.8.8
rc-update add net.eth0
In the example, the container uses IP ~192.168.11.2~~ to route via ~192.168.11.1~.
Other settings
Check the localization parameters and set the root password:
cl-setup-locale -l ru_RU --timezone Europe/Moscow
passwd
You can also specify the complete hostname:
cl-setup-network --hostname calculate.mydomain.org
To check the changes, run:
hostname -f
Adding applications in a container
Update Portage in the container:
cl-update
The first time you run the tool, it pulls the Portage tree and enabled overlays.
Now install the software you need for logging and cron jobs:
emerge -a app-admin/logrotate app-admin/syslog-ng sys-process/cronie
When you have completed the configuration, exit the container:
exit
Update to v.4.0
Starting with LXC 4.0, one configuration file common.conf is used instead of separate files for the different container types. When upgrading app-containers/lxc from previous versions, adjustments must be made to the settings of the already prepared containers. Edit the path to the common configuration file:
/var/calculate/lxc/calculate/config
#lxc.include = /usr/share/lxc/config/gentoo.common.conf lxc.include = /usr/share/lxc/config/common.conf
To run programs that use /dev/shm (e.g. PostgreSQL), add the tmpfs mount to this path in the configuration file of the container:
/var/calculate/lxc/calculate/config
lxc.mount.entry = none dev/shm tmpfs rw,nosuid,nodev,create=dir
Conclusion
Containers are useful as they remain separated from the main system. You can experiment with them and even launch Calculate Linux from other systems.