Instalacja LXC

sudo apt update
sudo apt install acl lxc lxc-templates

Sprawdzenie konfiguracji

LXC automatycznie sprawdzi, czy Twój system jest gotowy. Uruchom:

sudo lxc-checkconfig

Jeśli wszędzie widzisz enabled, system jest gotowy do pracy.

Utworzenie kontenera LXC - Samba AD 

Tworzymy trzy kontenery oparte na architekturze Debian 13. 

W pliku konfiguracyjnym LXC (np. /var/lib/lxc/srv-samba-ad/config) definiujemy powiązanie z mostkiem br0 oraz limity zasobów, pamiętając, aby nie wpisywać tam parametrów IP/Gateway, co prowadzi do konfliktów z menedżerem sieciowym kontenera:

lxc-create -n srv-ad -t download -- -d debian -r trixie -a amd64

-n : nazwa kontenera
-t : oparty na systemie debiana (można wybrac inne dystrybucje) 

powiązanie z mostkiem sieciowym

nano /var/lib/lxc/srv-ad/config
# Template used to create this container: /usr/share/lxc/templates/lxc-download
# Parameters passed to the template: -d debian -r trixie -a amd64
# For additional config options, please look at lxc.container.conf(5)

# Uncomment the following line to support nesting containers:
#lxc.include = /usr/share/lxc/config/nesting.conf
# (Be aware this has security implications)


# Distribution configuration
lxc.include = /usr/share/lxc/config/common.conf
lxc.arch = linux64

# Container specific configuration
lxc.apparmor.profile = generated
lxc.apparmor.allow_nesting = 1
lxc.rootfs.path = dir:/var/lib/lxc/srv-ad/rootfs
lxc.uts.name = srv-ad

# Network configuration
lxc.net.0.type = veth
lxc.net.0.link = br0
lxc.net.0.flags = up

#Losowy MAC
lxc.net.0.hwaddr = 00:16:3e:3a:7f:21

#Auto start
lxc.start.auto = 1
lxc.start.order = 1
lxc.start.delay = 5

# Limit pamięci RAM (np. 1 GB)
lxc.cgroup2.memory.max = 2G

# Limit pamięci SWAP (np. 256M)
lxc.cgroup2.memory.swap.max = 0

# Przypisanie rdzeni procesora (rdzenie 0 1)
lxc.cgroup2.cpuset.cpus = 0 1

#Montowanie katalogów domowych userów
#lxc.mount.entry = /home/LO home/LO none bind,create=dir 0 0

#dla chrony
#lxc.cap.drop =
sudo lxc-start -n srv-ad

 

Ustawienia karty sieciowej dla kontenera

nano /var/lib/lxc/srv-ad/rootfs/etc/systemd/network/10-eth0.network
[Match]
Name=eth0

[Network]
Address=192.168.10.201/24
Gateway=192.168.10.200
DNS=1.1.1.1
DNS=8.8.8.8
lxc-stop -n srv-ad
lxc-start -n srv-ad
lxc-attach -n srv-ad -- ping -c 3 1.1.1.1

Routing

ip r

default via 192.168.10.200 dev eth0 proto static
192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.201

nano /var/lib/lxc/srv-ad/rootfs/etc/resolv.conf
nameserver 192.168.10.200

Sprawdzenie

lxc-info -n srv-ad

Name:           srv-ad
State:          RUNNING
PID:            7233
IP:             192.168.10.201
Link:           vethkpuVac
TX bytes:      1.39 KiB
RX bytes:      0 bytes
Total bytes:   1.39 KiB

Statystyki

lxc-cgroup -n srv-ad memory.current
lxc-cgroup -n srv-ad memory.max
lxc-cgroup -n srv-ad cpuset.cpus

 


 

Utworzenie kontenera LXC - Mysql

lxc-create -n srv-mysql -t download -- -d debian -r trixie -a amd64

-n : nazwa kontenera
-t : oparty na systemie debiana (można wybrac inne dystrybucje) 

powiązanie z mostkiem sieciowym

nano /var/lib/lxc/srv-mysql/config
# Template used to create this container: /usr/share/lxc/templates/lxc-debian
# Parameters passed to the template: -r trixie
# For additional config options, please look at lxc.container.conf(5)

# Uncomment the following line to support nesting containers:
#lxc.include = /usr/share/lxc/config/nesting.conf
# (Be aware this has security implications)

lxc.net.0.type = veth
lxc.net.0.hwaddr = 00:16:3e:dc:8c:9e
lxc.net.0.link = br0
lxc.net.0.flags = up
lxc.apparmor.profile = generated
lxc.apparmor.allow_nesting = 1
lxc.rootfs.path = dir:/var/lib/lxc/srv-mysql/rootfs

# Common configuration
lxc.include = /usr/share/lxc/config/debian.common.conf

# Container specific configuration
lxc.tty.max = 4
lxc.uts.name = srv-mysql
lxc.arch = amd64
lxc.pty.max = 1024

#Auto start
lxc.start.auto = 1
lxc.start.delay = 5
lxc.start.order = 3

# Limit pamięci RAM (np. 1 GB)
lxc.cgroup2.memory.max = 3G

# Limit pamięci SWAP (np. 512 MB)
lxc.cgroup2.memory.swap.max = 256M

# Przypisanie rdzeni procesora (rdzeń 0 )
lxc.cgroup2.cpuset.cpus = 4-5

#Montowanie katalogów domowych userów
lxc.mount.entry = /home/LO home/LO none bind,create=dir 0 0

Ustawienia karty sieciowej dla kontenera

nano /var/lib/lxc/srv-mysql/rootfs/etc/network/interfaces
# Pętla zwrotna
auto lo
iface lo inet loopback
# Interfejs główny
auto eth0
iface eth0 inet static
    address 192.168.10.203
    netmask 255.255.255.0
    gateway 192.168.10.200
    dns-nameservers 192.168.10.200 8.8.8.8

Uruchomienie

sudo lxc-start -n moj-kontener -d

Wejście do konsoli kontenera

sudo lxc-attach -n moj-kontener

Spis treści: