Difference between revisions of "Lxc.fjfi.cvut.cz"

From NMS
Jump to: navigation, search
(Základní informace (lists))
(Kontejnery systemd-nspawn - CentOS8)
 
(16 intermediate revisions by the same user not shown)
Line 6: Line 6:
 
;HW : virtuální (Xen) - paravirtualizace x86_64
 
;HW : virtuální (Xen) - paravirtualizace x86_64
 
;OS : [http://www.centos.org CentOS7]
 
;OS : [http://www.centos.org CentOS7]
;Využití : LXC kontejnery ([http://gitlab.fjfi.cvut.cz gitlab], [http://indico.fjfi.cvut.cz indico])
+
;Využití : LXC kontejnery ([http://gitlab.fjfi.cvut.cz gitlab], [http://indico.fjfi.cvut.cz indico], [[vhost.fjfi.cvut.cz|vhost]], ...)
 
;Konto : -
 
;Konto : -
  
 
=Instalace a konfigurace=
 
=Instalace a konfigurace=
 +
* standardní (minimální) instalace operačního systému
 +
* standardní puppet konfigurace pro server (certifikáty, logging, monitoring, ...)
 
* default instalace s podporou LXC + libvirt
 
* default instalace s podporou LXC + libvirt
 +
 +
=Kontejnery=
 +
 +
==Kontejnery libvirt-lxc==
 +
* podporovány (a funkční) pouze v CentOS 7.0 (od 7.1 deprecated a segfaultují)
 
* každý kontejner v nainstalován do LVM oddílu
 
* každý kontejner v nainstalován do LVM oddílu
 
  lvcreate -L 50G -T lxc/thinpool
 
  lvcreate -L 50G -T lxc/thinpool
  lvcreate -V1G -T lxc/thinpool -n centos7
+
  lvcreate -V1G -T lxc/thinpool -n name
** připojen do standardního umístění pro libvirt filesystémy se symlinkem z <tt>/root/fs-name</tt>
+
* připojen do standardního umístění pro libvirt filesystémy se symlinkem z <tt>/root/fs-name</tt>
** informace o instalaci a konfiguraci uloženy v adresáři <tt>/root/inst-name</tt>
+
* informace o instalaci a konfiguraci uloženy v adresáři <tt>/root/inst-name</tt>
 
  yum -y --installroot=/var/lib/libvirt/filesystems/name --releasever=7 --nogpg install systemd initscripts passwd yum centos-release # ...
 
  yum -y --installroot=/var/lib/libvirt/filesystems/name --releasever=7 --nogpg install systemd initscripts passwd yum centos-release # ...
 
  virt-install --connect lxc:// --name name --ram 1024 --filesystem /var/lib/libvirt/filesystems/name/,/
 
  virt-install --connect lxc:// --name name --ram 1024 --filesystem /var/lib/libvirt/filesystems/name/,/
Line 26: Line 33:
 
  # ...
 
  # ...
 
  virsh -c lxc:// start --console name
 
  virsh -c lxc:// start --console name
 +
 +
==Kontejnery systemd-nspawn - CentOS7 ==
 +
* podporovány v CentOS 7.0 (systemd 209, bez rozumné podpory sítí), ale pro základní rozumné použití nutný alespoň CentOS 7.2 (systemd 219)
 +
* na stroji, kde budou provozovány systemd-nspawn kontejnery je potřeba přidat <tt>machines.target</tt>
 +
systemctl enable machines.target
 +
* každý kontejner v nainstalován do LVM oddílu
 +
lvcreate -L 50G -T centos_nspawn/pool00
 +
lvcreate -V1G -T centos_nspawn/pool00 -n NAME
 +
mkfs.ext4  /dev/centos_nspawn/NAME
 +
* připojen do standardního umístění <tt>/var/lib/machines/NAME</tt> se symlinkem z <tt>/root/fs-NAME</tt>
 +
mkdir /var/lib/machines/NAME
 +
echo "/dev/centos_nspawn/NAME    /var/lib/machines/NAME    ext4 defaults    1 2" >> /etc/fstab
 +
mount /dev/centos_nspawn/NAME
 +
* informace o instalaci a konfiguraci konkrétního kontejneru uloženy v adresáři <tt>/root/inst-NAME</tt>
 +
yum -y --installroot=/var/lib/machines/NAME --releasever=7 --nogpg install \
 +
    systemd systemd-networkd systemd-resolved initscripts passwd centos-release # ...
 +
 +
# allow login from console
 +
echo "pts/0" >> /var/lib/machines/NAME/etc/securetty
 +
echo "pts/1" >> /var/lib/machines/NAME/etc/securetty
 +
echo "pts/2" >> /var/lib/machines/NAME/etc/securetty
 +
echo "pts/3" >> /var/lib/machines/NAME/etc/securetty
 +
# basic "postinstall" configuration
 +
/bin/ln -fs ../usr/share/zoneinfo/Europe/Prague /var/lib/machines/NAME/etc/localtime
 +
/bin/cp /etc/skel/.bashrc /var/lib/machines/NAME/root
 +
/bin/cp /etc/skel/.bash_profile /var/lib/machines/NAME/root
 +
/bin/rm /var/lib/machines/NAME/etc/resolv.conf
 +
/bin/ln -s /run/systemd/resolve/resolv.conf /var/lib/machines/NAME/etc/resolv.conf
 +
/bin/mkdir /var/lib/machines/NAME/etc/systemd/network
 +
/bin/cp 10-static-host0.network /var/lib/machines/NAME/etc/systemd/network/10-static-host0.network
 +
#/bin/cp iptables /var/lib/machines/NAME/etc/sysconfig/iptables
 +
#/bin/cp ip6tables /var/lib/machines/NAME/etc/sysconfig/ip6tables
 +
 +
# use network bridging for containers (changed in override.conf)
 +
/bin/mkdir /etc/systemd/system/systemd-nspawn@NAME.service.d
 +
/bin/cp override.conf /etc/systemd/system/systemd-nspawn@NAME.service.d/override.conf
 +
systemctl daemon-reload
 +
 +
# don't allow excessive journal mem/file size
 +
perl -p -i -e 's/^#SystemMaxUse=.*/SystemMaxUse=100M/' /var/lib/machines/NAME/etc/systemd/journald.conf
 +
perl -p -i -e 's/^#SystemMaxFileSize=.*/SystemMaxFileSize=10M/' /var/lib/machines/NAME/etc/systemd/journald.conf
 +
perl -p -i -e 's/^#RuntimeMaxUse=.*/RuntimeMaxUse=25M/' /var/lib/machines/NAME/etc/systemd/journald.conf
 +
perl -p -i -e 's/^#RuntimeMaxFileSize=.*/RuntimeMaxFileSize=5M/' /var/lib/machines/NAME/etc/systemd/journald.conf
 +
 +
# change root password in container (doesn't work with SELinux enabled)
 +
setenforce 0
 +
chroot /var/lib/machines/NAME /bin/passwd root
 +
# systemd-nspawn -D /var/lib/machines/NAME
 +
# passwd
 +
setenforce 1
 +
 +
# rename hostname in container and enable required services
 +
chroot /var/lib/machines/NAME hostnamectl set-hostname NAME.fjfi.cvut.cz
 +
chroot /var/lib/machines/NAME systemctl enable systemd-networkd
 +
chroot /var/lib/machines/NAME systemctl enable systemd-resolved
 +
 +
# [http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html resource-control]
 +
#systemctl show systemd-nspawn@NAME
 +
systemctl set-property systemd-nspawn@NAME MemoryLimit=$((1024*1024*1024))
 +
systemctl daemon-reload
 +
 +
# comment out last line in postlogin (btmp updates can take too much time)
 +
#vi /var/lib/machines/NAME/etc/pam.d/postlogin
 +
 +
# I don't know why is next manual login neccessary!?
 +
# but without first "manual" login standard `machinectl`
 +
# commands doesn't work
 +
systemd-nspawn -bD /var/lib/machines/NAME
 +
 +
machinectl start NAME
 +
machinectl login NAME
 +
# to exit container console press three times ctrl+]
 +
machinectl status NAME
 +
machinectl poweroff NAME
 +
machinectl enable NAME
 +
 +
* 10-static-host0.network
 +
[Match]
 +
Name=host0
 +
 +
#[Link]
 +
MACAddress=00:11:22:33:44:55
 +
 +
[Network]
 +
Address=192.0.2.123/24
 +
Gateway=192.0.2.1
 +
Address=2001:DB8::123/64
 +
Gateway=2001:DB8::1
 +
DNS=192.0.2.2
 +
DNS=2001:DB8::2
 +
 +
* override.conf
 +
[Unit]
 +
After=network-online.target
 +
Wants=network-online.target
 +
 +
[Service]
 +
ExecStart=
 +
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-bridge=br0 --machine=%I
 +
 +
* [https://bugzilla.redhat.com/show_bug.cgi?id=1219729 SELinux prevents container start] (`<tt>machinectl start NAME</tt>`)
 +
grep dbus-daemon /var/log/audit/audit.log | audit2allow -M bug-machinectl-login
 +
semodule -i bug-machinectl-login.pp
 +
 +
==Kontejnery systemd-nspawn - CentOS8 ==
 +
* CentOS8 (systemd 239) nadále neobsahuje podporu systemd-networkd and systemd-resolvd, protože RedHat do budoucna planuje podporu konfigurace sítě pouze s využitím NetworkManageru a ostatní způsoby jsou označeny jako deprecated
 +
* na stroji, kde budou provozovány systemd-nspawn kontejnery je potřeba přidat <tt>machines.target</tt>
 +
systemctl enable machines.target
 +
* každý kontejner v nainstalován do LVM oddílu, přičemž na aktuální platformě je použito čisté LVM (bez thin provisioningu)
 +
lvcreate -L 50G -n NAME kmvirt
 +
mkfs.ext4  /dev/mapper/kmvirt-NAME
 +
* připojen do standardního umístění <tt>/var/lib/machines/NAME</tt> se symlinkem z <tt>/root/fs-NAME</tt> (lze řešit i elegantlněji čiste přes systemd a var-lib-machines.mount)
 +
mkdir /var/lib/machines/NAME
 +
echo "/dev/mappper/kmvirt-NAME    /var/lib/machines/NAME    ext4 defaults    1 2" >> /etc/fstab
 +
mount /var/lib/machines/NAME
 +
* informace o instalaci a konfiguraci konkrétního kontejneru uloženy v adresáři <tt>/root/inst-NAME</tt>
 +
yum -y --installroot=/var/lib/machines/NAME --releasever=8 --nogpg install \
 +
    centos-release systemd coreutils passwd NetworkManager nftables # ...
 +
 +
# basic "postinstall" configuration
 +
ln -fs ../usr/share/zoneinfo/Europe/Prague /var/lib/machines/NAME/etc/localtime
 +
cp /etc/skel/{.bashrc,.bash_profile} /var/lib/machines/NAME/root
 +
 +
# use network bridging for containers (changed in override.conf)
 +
mkdir /etc/systemd/system/systemd-nspawn@NAME.service.d
 +
cat > /etc/systemd/system/systemd-nspawn@NAME.service.d/override.conf <<EOF
 +
[Unit]
 +
After=network-online.target
 +
Wants=network-online.target
 +
[Service]
 +
ExecStart=
 +
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-bridge=br0 -U --settings=override --machine=%i
 +
EOF
 +
 +
# [http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html resource-control]
 +
#systemctl show systemd-nspawn@NAME
 +
systemctl set-property systemd-nspawn@NAME MemoryLimit=$((1024*1024*1024))
 +
 +
systemctl daemon-reload
 +
 +
# don't allow excessive journal mem/file size
 +
perl -p -i -e 's/^#SystemMaxUse=.*/SystemMaxUse=128M/' /var/lib/machines/NAME/etc/systemd/journald.conf
 +
perl -p -i -e 's/^#SystemMaxFileSize=.*/SystemMaxFileSize=16M/' /var/lib/machines/NAME/etc/systemd/journald.conf
 +
perl -p -i -e 's/^#RuntimeMaxUse=.*/RuntimeMaxUse=32M/' /var/lib/machines/NAME/etc/systemd/journald.conf
 +
perl -p -i -e 's/^#RuntimeMaxFileSize=.*/RuntimeMaxFileSize=8M/' /var/lib/machines/NAME/etc/systemd/journald.conf
 +
 +
# change root password in container (doesn't work with SELinux enabled)
 +
chroot /var/lib/machines/NAME /bin/passwd root
 +
# systemd-nspawn -D /var/lib/machines/NAME
 +
# passwd
 +
 +
# rename hostname in container and enable required services
 +
echo NAME.fjfi.cvut.cz > /var/lib/machines/NAME/etc/hostname
 +
echo 'LANG="en_US.UTF-8"' > /var/lib/machines/NAME/etc/locale.conf
 +
 +
# comment out last line in postlogin (btmp updates can take too much time)
 +
#vi /var/lib/machines/NAME/etc/pam.d/postlogin
 +
 +
# I don't know why is next manual login neccessary!?
 +
# but without first "manual" login standard `machinectl`
 +
# commands doesn't work
 +
systemd-nspawn -bD /var/lib/machines/NAME
 +
 +
nmcli con mod 'Wired connection 1' ipv4.method manual ipv4.addresses 147.32.9.xxx/26 ipv4.gateway 147.32.9.1 ipv4.dns 147.32.9.4,147.32.1.20
 +
nmcli con mod 'Wired connection 1' ipv6.method manual ipv6.addresses 2001:718:2:1900::xxxx/64 ipv6.gateway 2001:718:2:1900::1 ipv6.dns 2001:718:2:1900::4,2001:718:2:2200::100
 +
 +
machinectl start NAME
 +
machinectl login NAME  # to exit container console press three times ctrl+]
 +
machinectl status NAME
 +
machinectl poweroff NAME
 +
machinectl enable NAME
 +
 +
==Kontejnery docker==
 +
* odlišný přístup ke správě kontejnerů běžících z předem připravených "imagů"
 +
* standardně používá vlastní privátní NATovanou síť
 +
* pro zpřístupnění služeb lze probridgovat normální síť
 +
** pro více kontejnerů managovanou pres OVS
 +
** OVS není standardní součástí CentOS7 (a součástí jsou i jaderné moduly)
 +
 +
==Kontejnery LXC==
 +
* balíčky jsou součástí EPELu
 +
* nemájí/neměli šablony pro "nové" systemy (CentOS7)

Latest revision as of 21:23, 29 December 2019

Servery / Služby
Přístupné komukoliv
windows
srk
linux / unix
kmlinux
Omezený/individuální účet
linux / unix
bimbo · buon(KF) · km(KM) · lenochod(KJR) · linux · node(KM) · sunrise(KF) · unixlab(KFE) · vkstat(KM)
Služby
backup · DHCP · DNS · doména FJFI · eduroam · fileserver · IdM · forum · gitlab · lists · moodle · indico · mailgw · K4 · mailserver · NMS · openvpn · skolniftp · ssh · videokonference · VoIP · video · VPN · wififjfi · wiki · www
Učebny
e-sklipek · KFE unixlab · KFE pclab · PD1 · KM 105 · KM 115
Ostatní
Network · Blokované porty
[edit] · [view]

Základní informace lxc

Správce 
Petr Vokáč
HW 
virtuální (Xen) - paravirtualizace x86_64
OS 
CentOS7
Využití 
LXC kontejnery (gitlab, indico, vhost, ...)
Konto 
-

Instalace a konfigurace

  • standardní (minimální) instalace operačního systému
  • standardní puppet konfigurace pro server (certifikáty, logging, monitoring, ...)
  • default instalace s podporou LXC + libvirt

Kontejnery

Kontejnery libvirt-lxc

  • podporovány (a funkční) pouze v CentOS 7.0 (od 7.1 deprecated a segfaultují)
  • každý kontejner v nainstalován do LVM oddílu
lvcreate -L 50G -T lxc/thinpool
lvcreate -V1G -T lxc/thinpool -n name
  • připojen do standardního umístění pro libvirt filesystémy se symlinkem z /root/fs-name
  • informace o instalaci a konfiguraci uloženy v adresáři /root/inst-name
yum -y --installroot=/var/lib/libvirt/filesystems/name --releasever=7 --nogpg install systemd initscripts passwd yum centos-release # ...
virt-install --connect lxc:// --name name --ram 1024 --filesystem /var/lib/libvirt/filesystems/name/,/
virsh -c lxc:// shutdown name
chroot /var/lib/libvirt/filesystems/name /bin/passwd root
echo "pts/0" >> /var/lib/libvirt/filesystems/name/etc/securetty
cp /var/lib/libvirt/filesystems/indico/usr/share/zoneinfo/Europe/Prague /var/lib/libvirt/filesystems/name/etc/localtime
cp /etc/skel/.bashrc /var/lib/libvirt/filesystems/name/root
cp /etc/skel/.bash_profile /var/lib/libvirt/filesystems/name/root
# ...
virsh -c lxc:// start --console name

Kontejnery systemd-nspawn - CentOS7

  • podporovány v CentOS 7.0 (systemd 209, bez rozumné podpory sítí), ale pro základní rozumné použití nutný alespoň CentOS 7.2 (systemd 219)
  • na stroji, kde budou provozovány systemd-nspawn kontejnery je potřeba přidat machines.target
systemctl enable machines.target
  • každý kontejner v nainstalován do LVM oddílu
lvcreate -L 50G -T centos_nspawn/pool00
lvcreate -V1G -T centos_nspawn/pool00 -n NAME
mkfs.ext4  /dev/centos_nspawn/NAME
  • připojen do standardního umístění /var/lib/machines/NAME se symlinkem z /root/fs-NAME
mkdir /var/lib/machines/NAME
echo "/dev/centos_nspawn/NAME    /var/lib/machines/NAME    ext4 defaults    1 2" >> /etc/fstab
mount /dev/centos_nspawn/NAME
  • informace o instalaci a konfiguraci konkrétního kontejneru uloženy v adresáři /root/inst-NAME
yum -y --installroot=/var/lib/machines/NAME --releasever=7 --nogpg install \
    systemd systemd-networkd systemd-resolved initscripts passwd centos-release # ...

# allow login from console
echo "pts/0" >> /var/lib/machines/NAME/etc/securetty
echo "pts/1" >> /var/lib/machines/NAME/etc/securetty
echo "pts/2" >> /var/lib/machines/NAME/etc/securetty
echo "pts/3" >> /var/lib/machines/NAME/etc/securetty
# basic "postinstall" configuration
/bin/ln -fs ../usr/share/zoneinfo/Europe/Prague /var/lib/machines/NAME/etc/localtime
/bin/cp /etc/skel/.bashrc /var/lib/machines/NAME/root
/bin/cp /etc/skel/.bash_profile /var/lib/machines/NAME/root
/bin/rm /var/lib/machines/NAME/etc/resolv.conf
/bin/ln -s /run/systemd/resolve/resolv.conf /var/lib/machines/NAME/etc/resolv.conf
/bin/mkdir /var/lib/machines/NAME/etc/systemd/network
/bin/cp 10-static-host0.network /var/lib/machines/NAME/etc/systemd/network/10-static-host0.network
#/bin/cp iptables /var/lib/machines/NAME/etc/sysconfig/iptables
#/bin/cp ip6tables /var/lib/machines/NAME/etc/sysconfig/ip6tables

# use network bridging for containers (changed in override.conf)
/bin/mkdir /etc/systemd/system/systemd-nspawn@NAME.service.d
/bin/cp override.conf /etc/systemd/system/systemd-nspawn@NAME.service.d/override.conf
systemctl daemon-reload

# don't allow excessive journal mem/file size
perl -p -i -e 's/^#SystemMaxUse=.*/SystemMaxUse=100M/' /var/lib/machines/NAME/etc/systemd/journald.conf
perl -p -i -e 's/^#SystemMaxFileSize=.*/SystemMaxFileSize=10M/' /var/lib/machines/NAME/etc/systemd/journald.conf
perl -p -i -e 's/^#RuntimeMaxUse=.*/RuntimeMaxUse=25M/' /var/lib/machines/NAME/etc/systemd/journald.conf
perl -p -i -e 's/^#RuntimeMaxFileSize=.*/RuntimeMaxFileSize=5M/' /var/lib/machines/NAME/etc/systemd/journald.conf

# change root password in container (doesn't work with SELinux enabled)
setenforce 0
chroot /var/lib/machines/NAME /bin/passwd root
# systemd-nspawn -D /var/lib/machines/NAME
# passwd
setenforce 1

# rename hostname in container and enable required services
chroot /var/lib/machines/NAME hostnamectl set-hostname NAME.fjfi.cvut.cz
chroot /var/lib/machines/NAME systemctl enable systemd-networkd
chroot /var/lib/machines/NAME systemctl enable systemd-resolved

# resource-control
#systemctl show systemd-nspawn@NAME 
systemctl set-property systemd-nspawn@NAME MemoryLimit=$((1024*1024*1024))
systemctl daemon-reload

# comment out last line in postlogin (btmp updates can take too much time)
#vi /var/lib/machines/NAME/etc/pam.d/postlogin

# I don't know why is next manual login neccessary!?
# but without first "manual" login standard `machinectl`
# commands doesn't work
systemd-nspawn -bD /var/lib/machines/NAME

machinectl start NAME
machinectl login NAME
# to exit container console press three times ctrl+]
machinectl status NAME
machinectl poweroff NAME
machinectl enable NAME
  • 10-static-host0.network
[Match]
Name=host0

#[Link]
MACAddress=00:11:22:33:44:55

[Network]
Address=192.0.2.123/24
Gateway=192.0.2.1
Address=2001:DB8::123/64
Gateway=2001:DB8::1
DNS=192.0.2.2
DNS=2001:DB8::2
  • override.conf
[Unit]
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-bridge=br0 --machine=%I
grep dbus-daemon /var/log/audit/audit.log | audit2allow -M bug-machinectl-login
semodule -i bug-machinectl-login.pp

Kontejnery systemd-nspawn - CentOS8

  • CentOS8 (systemd 239) nadále neobsahuje podporu systemd-networkd and systemd-resolvd, protože RedHat do budoucna planuje podporu konfigurace sítě pouze s využitím NetworkManageru a ostatní způsoby jsou označeny jako deprecated
  • na stroji, kde budou provozovány systemd-nspawn kontejnery je potřeba přidat machines.target
systemctl enable machines.target
  • každý kontejner v nainstalován do LVM oddílu, přičemž na aktuální platformě je použito čisté LVM (bez thin provisioningu)
lvcreate -L 50G -n NAME kmvirt
mkfs.ext4  /dev/mapper/kmvirt-NAME
  • připojen do standardního umístění /var/lib/machines/NAME se symlinkem z /root/fs-NAME (lze řešit i elegantlněji čiste přes systemd a var-lib-machines.mount)
mkdir /var/lib/machines/NAME
echo "/dev/mappper/kmvirt-NAME    /var/lib/machines/NAME    ext4 defaults    1 2" >> /etc/fstab
mount /var/lib/machines/NAME
  • informace o instalaci a konfiguraci konkrétního kontejneru uloženy v adresáři /root/inst-NAME
yum -y --installroot=/var/lib/machines/NAME --releasever=8 --nogpg install \
    centos-release systemd coreutils passwd NetworkManager nftables # ...

# basic "postinstall" configuration
ln -fs ../usr/share/zoneinfo/Europe/Prague /var/lib/machines/NAME/etc/localtime
cp /etc/skel/{.bashrc,.bash_profile} /var/lib/machines/NAME/root

# use network bridging for containers (changed in override.conf)
mkdir /etc/systemd/system/systemd-nspawn@NAME.service.d
cat > /etc/systemd/system/systemd-nspawn@NAME.service.d/override.conf <<EOF
[Unit]
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-bridge=br0 -U --settings=override --machine=%i
EOF

# resource-control
#systemctl show systemd-nspawn@NAME 
systemctl set-property systemd-nspawn@NAME MemoryLimit=$((1024*1024*1024))

systemctl daemon-reload

# don't allow excessive journal mem/file size
perl -p -i -e 's/^#SystemMaxUse=.*/SystemMaxUse=128M/' /var/lib/machines/NAME/etc/systemd/journald.conf
perl -p -i -e 's/^#SystemMaxFileSize=.*/SystemMaxFileSize=16M/' /var/lib/machines/NAME/etc/systemd/journald.conf
perl -p -i -e 's/^#RuntimeMaxUse=.*/RuntimeMaxUse=32M/' /var/lib/machines/NAME/etc/systemd/journald.conf
perl -p -i -e 's/^#RuntimeMaxFileSize=.*/RuntimeMaxFileSize=8M/' /var/lib/machines/NAME/etc/systemd/journald.conf

# change root password in container (doesn't work with SELinux enabled)
chroot /var/lib/machines/NAME /bin/passwd root
# systemd-nspawn -D /var/lib/machines/NAME
# passwd

# rename hostname in container and enable required services
echo NAME.fjfi.cvut.cz > /var/lib/machines/NAME/etc/hostname
echo 'LANG="en_US.UTF-8"' > /var/lib/machines/NAME/etc/locale.conf

# comment out last line in postlogin (btmp updates can take too much time)
#vi /var/lib/machines/NAME/etc/pam.d/postlogin

# I don't know why is next manual login neccessary!?
# but without first "manual" login standard `machinectl`
# commands doesn't work
systemd-nspawn -bD /var/lib/machines/NAME

nmcli con mod 'Wired connection 1' ipv4.method manual ipv4.addresses 147.32.9.xxx/26 ipv4.gateway 147.32.9.1 ipv4.dns 147.32.9.4,147.32.1.20 
nmcli con mod 'Wired connection 1' ipv6.method manual ipv6.addresses 2001:718:2:1900::xxxx/64 ipv6.gateway 2001:718:2:1900::1 ipv6.dns 2001:718:2:1900::4,2001:718:2:2200::100

machinectl start NAME
machinectl login NAME  # to exit container console press three times ctrl+]
machinectl status NAME
machinectl poweroff NAME
machinectl enable NAME

Kontejnery docker

  • odlišný přístup ke správě kontejnerů běžících z předem připravených "imagů"
  • standardně používá vlastní privátní NATovanou síť
  • pro zpřístupnění služeb lze probridgovat normální síť
    • pro více kontejnerů managovanou pres OVS
    • OVS není standardní součástí CentOS7 (a součástí jsou i jaderné moduly)

Kontejnery LXC

  • balíčky jsou součástí EPELu
  • nemájí/neměli šablony pro "nové" systemy (CentOS7)