GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer et lancer des conteneurs Linux LXC avec les commandes LXC

Les conteneurs LXC sont un moyen très rapide de créer un pseudo-environnement virtuel.

Dans l'article précédent sur LXC, nous avons expliqué comment installer et configurer les conteneurs Linux LXC.

Dans ce didacticiel, nous expliquerons comment créer un nouveau conteneur Linux, démarrer le conteneur et se connecter à la console virtuelle LXC pour utiliser le nouveau conteneur.

À des fins de démonstration, nous allons créer un conteneur virtuel CentOS LXC dans ce didacticiel, mais vous pouvez créer un conteneur virtuel pour pratiquement toutes les distributions Linux de votre choix.

1. Modèles de conteneur LXC

Conteneurs Linux LXC fournit par défaut des modèles de conteneurs pour plusieurs distributions Linux populaires. Voici quelques-uns des modèles LXC que vous pouvez utiliser immédiatement.

  • CentOS
  • Ubuntu
  • Fédora
  • OuvrirSUSE
  • Gentoo
  • Debian
  • Oracle Linux
  • ArchLinux

Tous les modèles LXC disponibles se trouvent dans le répertoire /usr/local/share/lxc/templates.

# ls -1 /usr/local/share/lxc/templates
lxc-alpine
lxc-altlinux
lxc-archlinux
lxc-busybox
lxc-centos
lxc-cirros
lxc-debian
lxc-download
lxc-fedora
lxc-gentoo
lxc-openmandriva
lxc-opensuse
lxc-oracle
lxc-plamo
lxc-sshd
lxc-ubuntu
lxc-ubuntu-cloud

2. Créer un conteneur à l'aide de lxc-create

Pour créer le conteneur, utilisez la commande lxc-create comme indiqué ci-dessous.

Dans la commande suivante :

  • –n option indique le nom du conteneur
  • L'option
  • –t indique le modèle utilisé pour créer le conteneur. Dans cet exemple, nous utilisons le modèle lxc-centos pour créer un conteneur CentOS.

Dans cet exemple, cela créera le conteneur CentOS avec une installation minimale de centos.

Cela téléchargera tous les packages nécessaires à l'exécution de CentOS minimal (par exemple, environ 140 packages environ) et les installera dans le cadre du conteneur MyCentOSContainer1

# lxc-create -n MyCentOSContainer1 -t /usr/local/share/lxc/templates/lxc-centos
/usr/local/share/lxc/templates/lxc-centos
Host CPE ID from /etc/system-release-cpe: cpe:/o:centos:linux:6:GA
dnsdomainname: Unknown host
Checking cache download in /usr/local/var/cache/lxc/centos/x86_64/6/rootfs ... 
Downloading centos minimal ...
...
...
  Installing : libgcc-4.4.7-16.el6.x86_64       1/142 
  Installing : setup-2.8.14-20.el6_4.1.noarch   2/142 
  Installing : filesystem-2.4.30-3.el6.x86_64   3/142 
...
  Verifying  : gzip-1.3.12-22.el6.x86_64        139/142 
  Verifying  : mingetty-1.08-5.el6.x86_64       140/142 
  Verifying  : libxml2-2.7.6-20.el6_7.1.x86_64  141/142 
  Verifying  : 1:findutils-4.4.2-6.el6.x86_64   142/142 
...
Download complete.
Copy /usr/local/var/cache/lxc/centos/x86_64/6/rootfs to /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs ... 
Copying rootfs to /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs ...

3. Mot de passe racine pour le conteneur LXC

Le mot de passe root du conteneur LXC est stocké sous :/usr/local/var/lib/lxc/{container-name}/tmp_root_pass

Ainsi, dans l'exemple ci-dessus, pour le conteneur LXC que nous venons de créer, le mot de passe root temporaire est sous ce qui suit :

# cat /usr/local/var/lib/lxc/MyCentOSContainer1/tmp_root_pass
Root-MyCentOSContainer1-pf7qMB

Vous pouvez modifier le mot de passe root de votre conteneur à tout moment, même si votre conteneur est désactivé en utilisant chroot depuis l'hôte de contrôle, comme indiqué ci-dessous.

# chroot /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs passwd
Changing password for user root.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

4. Démarrez le conteneur Linux LXC à l'aide de lxc-start

Une fois le conteneur créé, utilisez lxc-start comme indiqué ci-dessous pour démarrer votre conteneur.

# lxc-start -n MyCentOSContainer1
lxc-start: cgfs.c: handle_cgroup_settings: 2077 Device or resource busy - failed to set memory.use_hierarchy to 1; continuing

CentOS release 6.6 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

MyCentOSContainer1 login: init: rcS main process (8) killed by TERM signal
Entering non-interactive startup
Bringing up loopback interface:               [  OK  ]
Bringing up interface eth0:
Determining IP information for eth0... done.  [  OK  ]
Starting system logger:                       [  OK  ]
Mounting filesystems:                         [  OK  ]
Generating SSH2 RSA host key:                 [  OK  ]
Generating SSH1 RSA host key:                 [  OK  ]
Generating SSH2 DSA host key:                 [  OK  ]
Starting sshd:               				  [  OK  ]

CentOS release 6.6 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

MyCentOSContainer1 login:

Si vous obtenez le message d'erreur suivant "le conteneur n'a pas pu démarrer", c'est qu'il y a un problème dans votre configuration.

# lxc-start -n MyCentOSContainer1
lxc-start: lxc_start.c: main: 344 The container failed to start.
lxc-start: lxc_start.c: main: 346 To get more details, run the container in foreground mode.
lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options.

Pour savoir exactement ce qui ne va pas avec votre configuration, exécutez le conteneur LXC au premier plan en utilisant l'option -F comme indiqué ci-dessous.

Si vous obtenez le message d'erreur suivant, "Échec de la connexion au pont", "Échec de la création de netdev", "Échec de la création du réseau", l'adaptateur de pont n'est pas configuré correctement sur votre système.

Vérifiez les paramètres ifcfg-br0 que nous avons mentionnés dans notre précédent article sur la configuration du conteneur Linux LXC, pour vous assurer que la configuration du pont est correctement configurée et fonctionne.

# lxc-start -F -n MyCentOSContainer1
lxc-start: conf.c: instantiate_veth: 2796 failed to attach 'veth8VPW29' to the bridge 'lxcbr0': Operation not permitted
lxc-start: conf.c: lxc_create_network: 3079 failed to create netdev
lxc-start: start.c: lxc_spawn: 935 failed to create the network
lxc-start: start.c: __lxc_start: 1192 failed to spawn 'MyCentOSContainer1'
lxc-start: lxc_start.c: main: 344 The container failed to start.
lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options.

5. Afficher les informations sur le conteneur à l'aide de lxc-info

Pour afficher des informations détaillées sur votre conteneur, utilisez la commande lxc-info comme indiqué ci-dessous.

# lxc-info -n MyCentOSContainer1
Name:           MyCentOSContainer1
State:          RUNNING
PID:            7696
IP:             192.168.100.101
CPU use:        1.61 seconds
BlkIO use:      32.00 KiB
Memory use:     2.63 MiB
Link:           vethLNI1UH
 TX bytes:      1.98 KiB
 RX bytes:      46.08 KiB
 Total bytes:   48.06 KiB

6. Arrêtez le conteneur Linux LXC à l'aide de lxc-stop

Pour arrêter votre conteneur Linux LXC, utilisez lxc-stop comme indiqué ci-dessous et spécifiez le nom du conteneur que vous souhaitez arrêter.

# lxc-stop -n MyCentOSContainer1

7. Cloner un conteneur existant à l'aide de lxc-clone

Le clonage est utile lorsque vous souhaitez prendre un instantané de l'ancien conteneur avant d'apporter des modifications à la configuration du conteneur. Vous pouvez l'utiliser comme méthode de sauvegarde simple pour la configuration du conteneur.

Le clonage du conteneur peut être effectué à l'aide de la commande lxc-clone comme indiqué ci-dessous. Dans ce cas, le nouveau nom du conteneur est MyCentOSContainer2

# lxc-clone -o MyCentOSContainer1 -n MyCentOSContainer2
Created container MyCentOSContainer2 as copy of MyCentOSContainer1

8. Supprimer un conteneur existant à l'aide de lxc-destory

Pour supprimer un conteneur existant, utilisez la commande lxc-destroy comme indiqué ci-dessous.

# lxc-destroy -n MyCentOSContainer2

9. Connectez-vous à la console de conteneur Linux LXC

Pour vous connecter à la console du conteneur, utilisez la commande lxc-console suivante.

# lxc-console -n MyCentOSContainer1
Connected to tty 1
Type Ctrl+a q to exit the console, Ctrl+a Ctrl+a to enter Ctrl+a itself

CentOS release 6.6 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

MyCentOSContainer1 login:

10. Modifier les configurations LXC à l'aide de lxc-config

Pour modifier la configuration de LXC, vous pouvez utiliser la commande lxc-config.

Tout d'abord, utilisez l'option lxc-config -l, qui affichera simplement toutes les configurations disponibles comme indiqué ci-dessous.

# lxc-config -l
lxc.default_config
lxc.lxcpath
lxc.bdev.lvm.vg
lxc.bdev.lvm.thin_pool
lxc.bdev.zfs.root
lxc.cgroup.use
lxc.cgroup.pattern

Ensuite, utilisez l'option lxc.default_config comme indiqué ci-dessous pour afficher les informations sur chaque fichier de configuration et ses paramètres associés.

# lxc-config lxc.default_config
/usr/local/etc/lxc/default.conf

# cat /usr/local/etc/lxc/default.conf
lxc.network.type = veth
lxc.network.link = virbr0
lxc.network.flags = up

La commande suivante affichera le patch LXC où tous les conteneurs sont stockés.

# lxc-config lxc.lxcpath
/usr/local/var/lib/lxc

Comme nous le voyons ci-dessous, nous voyons les deux conteneurs que nous avons créés sous ce répertoire.

# cd /usr/local/var/lib/lxc

# ls
MyCentOSContainer1  MyCentOSContainer2

Sous le répertoire du conteneur, vous verrez le fichier de configuration, qui contient toutes les informations de configuration de base pour ce conteneur particulier, comme indiqué ci-dessous.

# cd /usr/local/var/lib/lxc/MyCentOSContainer1

# vi config
lxc.network.type = veth
lxc.network.link = virbr0
lxc.network.hwaddr = fb:bb:f2:87:e8:17
lxc.network.flags = up
lxc.rootfs = /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs
lxc.include = /usr/local/share/lxc/config/centos.common.conf
lxc.arch = x86_64
lxc.utsname = MyCentOSContainer1

Linux
  1. Comment désactiver les commandes d'arrêt et de redémarrage sous Linux

  2. Qu'est-ce que Podman et comment installer Podman sous Linux

  3. Comment trouver des fichiers volumineux Linux avec les commandes find et du

  4. Rechercher un fichier avec les commandes Rechercher et Localiser sous Linux

  5. Conteneurs LXD et mise en réseau avec IP statique

Comment créer et gérer des partitions de disque avec Fdisk sous Linux

Comment utiliser les commandes Pbcopy et Pbpaste sous Linux

Comment créer un groupe de volumes sous Linux avec LVM

Comment créer et utiliser un fichier d'échange sous Linux

Comment :démarrer avec les conteneurs Windows et Docker

Comment installer et configurer les conteneurs Linux LXC sur CentOS / RHEL / Ubuntu