GNU/Linux >> Tutoriels Linux >  >> Cent OS

Configurer le conteneur Linux avec LXC sur CentOS 7/RHEL 7

Les conteneurs Linux (LXC) sont une méthode de virtualisation légère au niveau du système d'exploitation qui nous permet d'exécuter plusieurs systèmes Linux isolés (conteneurs) sur un seul hôte. LXC ne fournit pas toutes les fonctionnalités des logiciels de virtualisation standard tels que VMware, VirtualBox et KVM, mais fournit plutôt un environnement virtuel qui possède son propre processeur, sa mémoire, ses blocs d'E/S et son réseau. LXC crée un environnement Linux aussi proche qu'une installation Linux standard mais sans avoir besoin d'un noyau séparé.

LXC est un logiciel gratuit, et il est publié sous licence GNU LGPLv2.1+. Le projet LXC est sponsorisé par Canonical Ltd qui est à l'origine du système d'exploitation Ubuntu.

Dans ce guide, je vais vous montrer comment installer LXC, et comment créer et gérer LXC en utilisant la ligne de commande ainsi qu'en utilisant le portail Web LXC .

Prérequis

LXC n'est pas disponible sur le référentiel Base. Nous devons donc ajouter le référentiel EPEL au serveur à l'aide de la commande suivante.

# yum -y install epel-release

Les conteneurs LXC utilisent un pont réseau pour avoir accès à/depuis un réseau externe, avant de démarrer le conteneur, nous devons créer un pont réseau sur CentOS 7 / RHEL 7 . Le nom du pont réseau doit être "virbr0"

Installer LXC sur CentOS 7

Une fois que vous avez terminé les prérequis, il est temps d'installer LXC. Installez le LXC et les autres packages importants nécessaires au bon fonctionnement des conteneurs.

# yum -y install lxc lxc-templates libcap-devel libcgroup busybox wget bridge-utils lxc-extra

Exécutez la commande suivante pour vérifier que tout va bien pour exécuter des conteneurs.

# lxc-checkconfig

 Kernel configuration not found at /proc/config.gz; searching...
 Kernel configuration found at /boot/config-3.10.0-327.el7.x86_64
 --- Namespaces ---
 Namespaces: enabled
 Utsname namespace: enabled
 Ipc namespace: enabled
 Pid namespace: enabled
 User namespace: enabled
 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 /usr/bin/lxc-checkconfig

Créer des conteneurs Linux

LXC est livré avec des modèles prêts à l'emploi pour une installation facile des conteneurs, et vous pouvez répertorier les modèles disponibles à l'aide de la commande suivante.

# ls /usr/share/lxc/templates/

 lxc-alpine    lxc-archlinux  lxc-centos  lxc-debian    lxc-fedora  lxc-openmandriva  lxc-oracle  lxc-sshd    lxc-ubuntu-cloud
 lxc-altlinux  lxc-busybox    lxc-cirros  lxc-download  lxc-gentoo  lxc-opensuse      lxc-plamo   lxc-ubuntu

Pour créer un conteneur, lancez la commande suivante.

# lxc-create -n centos_lxc -t centos

Où,

-n

-t

Une fois que vous avez émis la commande ci-dessus, LXC commencera à créer le conteneur avec le nom "centos_lxc ".

Exemple de résultat :

Host CPE ID from /etc/os-release: cpe:/o:centos:centos:7
 Checking cache download in /var/cache/lxc/centos/x86_64/7/rootfs ...
 Downloading centos minimal ...
 Loaded plugins: fastestmirror
 base                                                                                                                                             | 3.6 kB  00:00:00
 updates                                                                                                                                          | 3.4 kB  00:00:00
 Determining fastest mirrors
 .
 .
 .
 .
 Complete!
 Download complete.
 Copy /var/cache/lxc/centos/x86_64/7/rootfs to /var/lib/lxc/centos_lxc/rootfs ...
 Copying rootfs to /var/lib/lxc/centos_lxc/rootfs ...
 sed: can't read /var/lib/lxc/centos_lxc/rootfs/etc/init/tty.conf: No such file or directory
 Storing root password in '/var/lib/lxc/centos_lxc/tmp_root_pass'
 Expiring password for user root.
 passwd: Successsed: can't read /var/lib/lxc/centos_lxc/rootfs/etc/rc.sysinit: No such file or directory
sed: can't read /var/lib/lxc/centos_lxc/rootfs/etc/rc.d/rc.sysinit: No such file or directory

Container rootfs and config have been created.
Edit the config file to check/enable networking setup.

The temporary root password is stored in:

        '/var/lib/lxc/centos_lxc/tmp_root_pass'


The root password is set up as expired and will require it to be changed
at first login, which you should do as soon as possible.  If you lose the
root password or wish to change it without starting the container, you
can change it from the host by running the following command (which will
also reset the expired flag):

        chroot /var/lib/lxc/centos_lxc/rootfs passwd

Veuillez noter les informations de connexion ci-dessus, et vous devez exiger ces informations pour vous connecter aux conteneurs.

Identifiants des conteneurs

Pour vous connecter au conteneur (centos_lxc ), soit utiliser le mot de passe racine temporaire stocké à l'emplacement suivant. Dans notre cas, "Root-centos_lxc-KRzJLy ” est le mot de passe racine de centos_lxc .

# cat /var/lib/lxc/centos_lxc/tmp_root_pass

 Root-centos_lxc-KRzJLy

ou

Réinitialisez le mot de passe root à l'aide de la commande suivante.

# chroot /var/lib/lxc/centos_lxc/rootfs passwd

PS :Vous n'avez pas encore commencé les conteneurs.

Démarrage des conteneurs Linux

Après avoir créé les conteneurs, démarrez-le à l'aide de la commande suivante, s'exécute en arrière-plan.

# lxc-start -n centos_lxc -d

Maintenant, prenez la console du conteneur en utilisant la commande suivante.

Remarque :J'utilise "-t" avec "0" pour connecter le conteneur à tty0, simplement parce que tty1 ne me répondait pas.

# lxc-console -n centos_lxc -t 0

Entrez le nom d'utilisateur et le mot de passe pour vous connecter. Vous pouvez trouver les informations d'identification à la fin de la sortie lors de la création d'un conteneur. Vous devez changer le mot de passe root lors de la première connexion.

Exemple de résultat :

Connected to tty 0
 Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
 CentOS Linux 7 (Core)
 Kernel 3.10.0-327.el7.x86_64 on an x86_64
 centos_lxc login: root
 Password:
 You are required to change your password immediately (root enforced)
 Changing password for root.
 (current) UNIX password:
 New password:
 Retype new password:
 [root@centos_lxc ~]#

Une fois connecté, vous pouvez effectuer tout le travail dans ce conteneur comme vous le feriez sur un serveur Linux normal.

Pour quitter la console du conteneur, appuyez sur "Ctrl+a" suivi de "q" . Maintenant, vous serez renvoyé au terminal de l'ordinateur hôte.

Si vous souhaitez vous reconnecter au conteneur (le conteneur est toujours en cours d'exécution), exécutez la commande suivante.

# lxc-console -n centos_lxc -t 0

Travailler avec des conteneurs Linux

Pour répertorier les conteneurs sur l'ordinateur hôte, utilisez la commande suivante.

# lxc-ls

 centos_lxc

Répertoriez également les conteneurs actuellement actifs et en cours d'exécution sur l'ordinateur hôte.

# lxc-ls --active

 centos_lxc

Comme je n'ai qu'un seul conteneur en cours d'exécution, c'est pourquoi vous pouvez voir le même résultat pour les deux commandes.

Si vous souhaitez obtenir toutes les informations sur le conteneur en cours d'exécution, exécutez la commande suivante.

# lxc-info -n centos_lxc

 Name:           centos_lxc
 State:          RUNNING
 PID:            4047
 IP:             192.168.12.16
 CPU use:        0.47 seconds
 BlkIO use:      6.32 MiB
 Memory use:     4.19 MiB
 KMem use:       0 bytes
 Link:           vethM3N48G
 TX bytes:      1.53 KiB
 RX bytes:      1.94 KiB
 Total bytes:   3.47 KiB

La commande ci-dessus vous donne des informations détaillées (nom, état, adresse IP, CPU, mémoire, E/S et utilisation du réseau) du conteneur "centos_lxc".

Vous pouvez également utiliser l'adresse IP pour vous connecter aux conteneurs au lieu de la console LXC.

Vous pouvez arrêter un conteneur en cours d'exécution à l'aide de la commande "lxc-stop", utilisez la commande suivante pour arrêter un conteneur "centos_lxc".

# lxc-stop -n centos_lxc

Cloner des conteneurs Linux

LXC a l'avenir de cloner un conteneur à partir du conteneur existant, exécutez la commande suivante pour cloner un conteneur "centos_lxc" existant vers un nouveau conteneur "centos_lxc_clone".

Remarque :Vous devez arrêter un conteneur en cours d'exécution avant de lancer le clone.

# lxc-clone centos_lxc centos_lxc_clone
 Created container centos_lxc_clone as copy of centos_lxc

Vérifiez si un conteneur est créé avec succès.

# lxc-ls
 centos_lxc  centos_lxc_clone

Vous pouvez commencer à travailler avec un nouveau conteneur comme d'habitude.

# lxc_start -n centos_lxc_clone -d
# lxc_console -n centos_lxc_clone -t 0
 Connected to tty 0
 Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
 CentOS Linux 7 (Core)
 Kernel 3.10.0-327.el7.x86_64 on an x86_64
 centos_lxc_clone login: root
 Password:
 Last login: Sat Mar 26 14:11:17 from 192.168.12.1
 [root@centos_lxc_clone ~]#

Éteignez le conteneur depuis l'intérieur de la console.

[root@centos_lxc_clone ~]# poweroff

Prendre un instantané

LXC a également un autre futur appelé snapshot, utilisez les commandes suivantes.

Remarque :Vous devez arrêter un conteneur avant de prendre un instantané.

# lxc-stop -n centos_lxc_clone

Pour une démo, je prends l'instantané de centos_lxc_clone.

# lxc-snapshot -n centos_lxc_clone

Exemple de sortie :

lxc_container: lxccontainer.c: lxcapi_snapshot: 2879 Snapshot of directory-backed container requested.
lxc_container: lxccontainer.c: lxcapi_snapshot: 2880 Making a copy-clone.  If you do want snapshots, then
lxc_container: lxccontainer.c: lxcapi_snapshot: 2881 please create an aufs or overlayfs clone first, snapshot that
lxc_container: lxccontainer.c: lxcapi_snapshot: 2882 and keep the original container pristine.

Pour savoir où l'instantané est enregistré, exécutez la commande suivante.

# lxc-snapshot -L -n centos_lxc_clone
 snap0 (/var/lib/lxcsnaps/centos_lxc_clone) 2016:03:26 10:59:10

Dans Centos 7, les instantanés LXC sont stockés dans "/var/lib/lxcsnaps/

Restauration de l'instantané

Pour restaurer un conteneur à partir de l'instantané, utilisez la commande suivante.

# lxc-snapshot -r snap0 -n centos_lxc_clone

Retirer les conteneurs

Pour supprimer complètement un conteneur, utilisez la commande suivante.

# lxc-destroy -n centos_lxc_clone

Exécuter un conteneur Ubuntu sur CentOS 7

J'ai rencontré plusieurs problèmes lorsque j'essayais d'exécuter un conteneur Ubuntu sur CentOS, j'ai pu exécuter Ubuntu à l'aide de quelques ajustements partagés sur d'autres sites Web.

Installez les packages ci-dessous pour les conteneurs basés sur Debian.

# yum -y install debootstrap perl
# cd /usr/sbin ; ln -sf debootstrap qemu-debootstrap

Exécutez la commande suivante pour remplacer le miroir Debian par le miroir Ubuntu.

# sed -i 's/DEF_HTTPS_MIRROR="https:\/\/mirrors.kernel.org\/debian"/DEF_HTTPS_MIRROR="https:\/\/mirrors.kernel.org\/ubuntu"/g' /usr/sbin/debootstrap

Merci à unix.stackexchange.com

Obtenez le trousseau de clés précis d'Ubuntu et placez-le dans le répertoire des trousseaux de clés.

# cd /tmp
# wget "http://archive.ubuntu.com/ubuntu/pool/main/u/ubuntu-keyring/ubuntu-keyring_2011.11.21.tar.gz"
# tar xzf ubuntu-keyring_2011.11.21.tar.gz
# mkdir /usr/share/keyrings/
# cp /tmp/ubuntu-keyring-2011.11.21/keyrings/ubuntu-archive-keyring.gpg /usr/share/keyrings/

Merci à blog.toxa.de

Créez un conteneur Ubuntu à l'aide de la commande suivante.

# lxc-create -n ubuntu_lxc -t ubuntu

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 Release 
I: Retrieving Release.gpg 
I: Checking Release signature
I: Valid Release signature (key id 630239CC130E1A7FD81A27B140976EAF437D05B5)
I: Retrieving Packages 
I: Validating Packages 
I: Retrieving Packages 

Generation complete.
Setting up libdevmapper1.02.1 (2:1.02.48-4ubuntu7.4) ...
Setting up dmsetup (2:1.02.48-4ubuntu7.4) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
Processing triggers for initramfs-tools ...
Processing triggers for resolvconf ...
invoke-rc.d: policy-rc.d denied execution of start.
Download complete
Copy /var/cache/lxc/precise/rootfs-amd64 to /var/lib/lxc/ubuntu_lxc/rootfs ... 
Copying rootfs to /var/lib/lxc/ubuntu_lxc/rootfs ...
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.
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.
##

À partir de la sortie ci-dessus, vous pouvez voir que l'utilisateur par défaut est "ubuntu" et que le mot de passe de l'utilisateur est "ubuntu".

Prenez une console de conteneur Ubuntu avec la commande suivante.

# lxc_console -n ubuntu_lxc

Ubuntu 12.04.5 LTS ubuntu_lxc console
ubuntu_lxc login: ubuntu
Password: 
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 3.10.0-327.10.1.el7.x86_64 x86_64)
 * Documentation:  https://help.ubuntu.com/
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Would you like to enter a security context? [N]  
ubuntu@ubuntu_lxc:~$

PS :Je n'ai pas vérifié la fonctionnalité du serveur à l'exception de la connexion, veuillez poster ici pour tout problème.

C'est tout. Soyez social, partagez ceci avec vos amis.


Cent OS
  1. Configurer le serveur SysLog sur CentOS 6 / RHEL 6

  2. Configurer le conteneur Linux avec LXC sur Ubuntu 16.04

  3. Configurer Rsyslog avec MySQL et LogAnalyzer sur CentOS/RHEL 6/5

  4. CentOS / RHEL 7 :Comment modifier les arguments GRUB2 avec grubby

  5. Impossible de démarrer le système d'exploitation Linux avec Auditd (CentOS/RHEL)

Comment installer Java sur RHEL 8 / CentOS 8 Linux

Comment installer WordPress sur RHEL 8 / CentOS 8 Linux

Comment installer GIMP sur CentOS 8 / RHEL 8 Linux

Comment configurer le serveur NFS sur CentOS 8 / RHEL 8

Comment configurer Jenkins sur CentOS 8 / RHEL 8

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