lxc : prise en main
Démarrer avec lxc
Installation de lxc et de quelques packet
[root@cent-os ~]#: yum -y install epel-release lxc lxc-templates libcap-devel libcgroup busybox wget bridge-utils lxc-extra
Vérifier la configuration.
[root@cent-os ~]#: lxc-checkconfig
sortie
Kernel configuration not found at /proc/config.gz; searching... Kernel configuration found at /boot/config-3.10.0-693.21.1.el7.x86_64 --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled newuidmap is not installed newgidmap is not installed Network namespace: enabled Multiple /dev/pts instances: enabled --- Control groups --- Cgroup: enabled Cgroup clone_children flag: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: enabled Cgroup cpuset: enabled --- Misc --- Veth pair device: enabled Macvlan: enabled Vlan: enabled Bridges: enabled Advanced netfilter: enabled CONFIG_NF_NAT_IPV4: enabled CONFIG_NF_NAT_IPV6: enabled CONFIG_IP_NF_TARGET_MASQUERADE: enabled CONFIG_IP6_NF_TARGET_MASQUERADE: enabled CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled --- Checkpoint/Restore --- checkpoint restore: enabled CONFIG_FHANDLE: enabled CONFIG_EVENTFD: enabled CONFIG_EPOLL: enabled CONFIG_UNIX_DIAG: enabled CONFIG_INET_DIAG: enabled CONFIG_PACKET_DIAG: enabled CONFIG_NETLINK_DIAG: enabled File capabilities: enabled Note : Before booting a new kernel, you can check its configuration usage : CONFIG=/path/to/config /bin/lxc-checkconfig
Lister les templates present par défaut.
[root@cent-os ~]#: ls -l /usr/share/lxc/templates/
sortie
total 340K -rwxr-xr-x 1 root root 11K Oct 20 2017 lxc-alpine* -rwxr-xr-x 1 root root 14K Oct 20 2017 lxc-altlinux* -rwxr-xr-x 1 root root 11K Oct 20 2017 lxc-archlinux* -rwxr-xr-x 1 root root 9.5K Oct 20 2017 lxc-busybox* -rwxr-xr-x 1 root root 30K Oct 20 2017 lxc-centos* -rwxr-xr-x 1 root root 11K Oct 20 2017 lxc-cirros* -rwxr-xr-x 1 root root 18K Oct 20 2017 lxc-debian* -rwxr-xr-x 1 root root 18K Oct 20 2017 lxc-download* -rwxr-xr-x 1 root root 49K Oct 20 2017 lxc-fedora* -rwxr-xr-x 1 root root 28K Oct 20 2017 lxc-gentoo* -rwxr-xr-x 1 root root 14K Oct 20 2017 lxc-openmandriva* -rwxr-xr-x 1 root root 14K Oct 20 2017 lxc-opensuse* -rwxr-xr-x 1 root root 35K Oct 20 2017 lxc-oracle* -rwxr-xr-x 1 root root 12K Oct 20 2017 lxc-plamo* -rwxr-xr-x 1 root root 6.7K Oct 20 2017 lxc-sshd* -rwxr-xr-x 1 root root 24K Oct 20 2017 lxc-ubuntu* -rwxr-xr-x 1 root root 12K Oct 20 2017 lxc-ubuntu-cloud*
Créer un container lxc à partir des templates par défaut. Dans le cas présent, basé sur centos.
[root@cent-os ~]#: lxc-create -n centos-mother_lxc -t centos
Les options :
-
-n
ou--name
le nom du container. -
-t
template du container.
Créer un container lxc en téléchargeant une distribution spécifique, dans le cas présent une Debian Stretch sur une architecture and64.
[root@cent-os ~]#: lxc-create -t download -n stan-debian_lxc -- -d debian -r stretch -a amd64
Les options :
-
-t
le template -
-d
la distribution -
-r
la release -
-a
l’architecture
Créer un container Ubuntu sous CentOS 7
Installation de debootstrap
et perl
.
[root@cent-os ~]#: yum -y install debootstrap perl
Créer un lien qemu-debootstrap.
[root@cent-os ~]#: ln -sf /usr/sbin/debootstrap /usr/sbin/qemu-debootstrap
Remplace les mirroirs Debian par ce de Ubuntu.
[root@cent-os ~]#: sed -i 's/DEF_HTTPS_MIRROR="https:\/\/mirrors.kernel.org\/debian"/DEF_HTTPS_MIRROR="https:\/\/mirrors.kernel.org\/ubuntu"/g' /usr/sbin/debootstrap
Téléchargement de la clé de Ubuntu et la placer dans le dossier à proprier.
[root@cent-os ~]#: wget "http://archive.ubuntu.com/ubuntu/pool/main/u/ubuntu-keyring/ubuntu-keyring_2011.11.21.tar.gz" -0 /tmp/ubuntu-keyring_2011.11.21.tar.gz [root@cent-os ~]#: tar xzf /tmp/ubuntu-keyring_2011.11.21.tar.gz [root@cent-os ~]#: mkdir /usr/share/keyrings/ [root@cent-os ~]#: cp /tmp/ubuntu-keyring-2011.11.21/keyrings/ubuntu-archive-keyring.gpg /usr/share/keyrings/
Créer le container Ubuntu à partir du template local.
: le mot de passe ET le login de ce container est : ubuntu
[root@cent-os ~]#: lxc-create -n ubuntu_lxc -t ubuntu
sortie
Checking cache download in /var/cache/lxc/precise/rootfs-amd64 ...
Installing packages in template: ssh,vim,language-pack-en
Downloading ubuntu precise minimal ...
I: Retrieving InRelease
I: Retrieving Release
I: Retrieving Release.gpg
[…]
Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
Creating SSH2 ECDSA key; this may take some time ...
Timezone in container is not configured. Adjust it manually.
##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##
Voir la liste des containers.
[root@cent-os ~]#: lxc-ls --fancy
sortie
NAME STATE IPV4 IPV6 AUTOSTART -------------------------------------------------------------------------- stan-debian_lxc STOPPED - - NO centos-mother_lxc STOPPED - - NO ubuntu-mother_lxc STOPPED - - NO
Manipuler un container lxc
Démarrer un container lxc.
[root@cent-os ~]#: lxc-start -n stan-debian_lxc -d
Mettre en place le mot de passe root.
[root@cent-os ~]#: chroot /var/lib/lxc/stan-debian_lxc/rootfs passwd
Se logger dans le container lxc.
: via cette commande, il faudra renseigner le login et le mot de passe.
[root@cent-os ~]#: lxc-console -n stan-debian_lxc -t 0
Les options :
-
-t
le nom de la console, ici tty0.
Ou :
: cette commande permet de passer outre l’authentification
[root@cent-os ~]#: lxc-attach -n stan-debian_lxc
Information sur le container passé en paramètre.
[root@cent-os ~]#: lxc-info -n stan-debian_lxc
Name: stan-debian_lxc State: RUNNING PID: 21728 IP: 192.168.122.29 CPU use: 0.03 seconds BlkIO use: 0 bytes Memory use: 664.00 KiB KMem use: 0 bytes Link: vethIDSC00 TX bytes: 1.63 KiB RX bytes: 40.57 KiB Total bytes: 42.21 KiB
Stopper de container passé en paramètre.
[root@cent-os ~]#: lxc-stop -n stan-debian_lxc
Clonner un container.
: le container doit être arrêté.
[root@cent-os ~]#: lxc-clone stan-debian_lxc stan-debian_lxc_clone
Faire un snapshot du container passé en paramètre.
[root@cent-os ~]#: lxc-snapshot -n stan-debian_lxc
Liste les snapshot du container passé en paramètre.
[root@cent-os ~]#: lxc-snapshot -L -n stan-debian_lxc
Les options :
-
-L
ou--list
list les snapshot.
Restore le snapshot snap0 du container passé en paramètre.
[root@cent-os ~]#: lxc-snapshot -r snap0 -n stan-debian_lxc
Supprimer le container passé en paramètre.
[root@cent-os ~]#: lxc-destroy -n stan-debian_lxc
Attribuer un IP static aux containers
Éditer le fichier de configuration du container.
[root@cent-os ~]#: vim /var/lib/lxc/stan-debian_lxc/config
aperçu du contenu du fichier
# Template used to create this container: /usr/share/lxc/templates/lxc-debian # Parameters passed to the template: # For additional config options, please look at lxc.container.conf(5) lxc.network.type = veth lxc.network.hwaddr = 00:16:3e:96:af:bf lxc.network.flags = up lxc.network.link = virbr0 lxc.network.ipv4 = 172.16.0.10/24 lxc.rootfs = /var/lib/lxc/stan-debian_lxc/rootfs # Common configuration lxc.include = /usr/share/lxc/config/debian.common.conf # Container specific configuration lxc.mount = /var/lib/lxc/stan-debian_lxc/fstab lxc.utsname = stan-debian_lxc lxc.arch = amd64 lxc.autodev = 1 lxc.kmsg = 0
Éditer le fichier de configuration de l’interface réseau du container.
[root@cent-os ~]#: vim /var/lib/lxc/stan-debian_lxc/rootfs/etc/network/interfaces
contenu du fichier
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
: manipulation faites sous centOS 7 (Kernel: Linux 3.10.0-693.21.20.el7.x86_64)
by Nicolas SHINEY | April 25, 2018 | No Comments | Système | Tags : container lxc