Skip navigation

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 | April 25, 2018 | No Comments | Système | Tags : container lxc