Cum se instalează, se creează și se administrează LXC (containerele Linux) în RHEL / CentOS 7


LXC , acronimul pentru Containerele Linux , este o soluție ușoară de virtualizare bazată pe kernelul Linux care practic rulează pe sistemul de operare, permițându-vă să difuzați mai multe distribuții izolate în același timp .

Diferența dintre LXC și virtualizarea KVM este că LXC nu emite hardware, ci împărtășește același spațiu de nume kernel, similar cu aplicațiile chroot.

Acest lucru face LXC o soluție de virtualizare foarte rapidă în comparație cu alte soluții de virtualizare, cum ar fi KVM, XEN sau VMware.

Acest articol vă va îndruma asupra modului în care puteți instala, implementa și executa containere LXC pe distribuții CentOS/RHEL și Fedora.

Un sistem de operare Linux cu instalare minimă:

  1. Installation of CentOS 7 Linux
  2. Installation of RHEL 7
  3. Installation of Fedora 23 Server

Pasul 1: Instalarea virtualizării LXC în Linux

1. Virtualizarea LXC este furnizată prin depozitele Epel. Pentru a utiliza acest repo, deschideți un terminal și instalați arhivele Epel în sistemul dvs. prin emiterea următoarei comenzi:

# yum install epel-release

2. Înainte de a continua procesul de instalare LXC, asigurați-vă că sunt instalate Perl interpretor de limbă și pachete debootstrap prin emiterea comenzilor de mai jos.

# yum install debootstrap perl libvirt

3. În cele din urmă, instalați soluția de virtualizare LXC cu următoarea comandă.

# yum install lxc lxc-templates

4. După instalarea serviciului LXC, verificați dacă se execută daemon LXC și libvirt .

# systemctl status lxc.service
# systemctl start lxc.service
# systemctl start libvirtd 
# systemctl status lxc.service

Stare> Verificați starea Daemon LXC

[[email protected] ~]# systemctl status lxc.service
lxc.service - LXC Container Initialization and Autoboot Code
   Loaded: loaded (/usr/lib/systemd/system/lxc.service; disabled)
   Active: inactive (dead)

[[email protected] ~]# systemctl start lxc.service
[[email protected] ~]# systemctl status lxc.service
lxc.service - LXC Container Initialization and Autoboot Code
   Loaded: loaded (/usr/lib/systemd/system/lxc.service; disabled)
   Active: active (exited) since Fri 2016-04-01 02:33:36 EDT; 1min 37s ago
  Process: 2250 ExecStart=/usr/libexec/lxc/lxc-autostart-helper start (code=exited, status=0/SUCCESS)
  Process: 2244 ExecStartPre=/usr/libexec/lxc/lxc-devsetup (code=exited, status=0/SUCCESS)
 Main PID: 2250 (code=exited, status=0/SUCCESS)

Apr 01 02:33:06 mail systemd[1]: Starting LXC Container Initialization and Autoboot Code...
Apr 01 02:33:06 mail lxc-devsetup[2244]: Creating /dev/.lxc
Apr 01 02:33:06 mail lxc-devsetup[2244]: /dev is devtmpfs
Apr 01 02:33:06 mail lxc-devsetup[2244]: Creating /dev/.lxc/user
Apr 01 02:33:36 mail lxc-autostart-helper[2250]: Starting LXC autoboot containers:  [  OK  ]
Apr 01 02:33:36 mail systemd[1]: Started LXC Container Initialization and Autoboot Code.

și verificați starea de virtualizare a kernel-ului LXC prin emiterea comenzii de mai jos.

# lxc-checkconfig

Configurare> Verificați configurarea virtualizării kernelului LXC

[[email protected] ~]# lxc-checkconfig
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-3.10.0-229.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: missing
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

Pasul 2: Creați și administrați containerele LXC în Linux

5. Pentru a lista lista de șabloane LXC disponibile, contactele deja instalate în sistemul dvs. conțin comanda de mai jos.

# ls -alh /usr/share/lxc/templates/

Containere> Listă de containere pentru șabloane LXC

total 344K
drwxr-xr-x. 2 root root 4.0K Apr  1 02:32 .
drwxr-xr-x. 6 root root  100 Apr  1 02:32 ..
-rwxr-xr-x. 1 root root  11K Nov 15 10:19 lxc-alpine
-rwxr-xr-x. 1 root root  14K Nov 15 10:19 lxc-altlinux
-rwxr-xr-x. 1 root root  11K Nov 15 10:19 lxc-archlinux
-rwxr-xr-x. 1 root root 9.7K Nov 15 10:19 lxc-busybox
-rwxr-xr-x. 1 root root  29K Nov 15 10:19 lxc-centos
-rwxr-xr-x. 1 root root  11K Nov 15 10:19 lxc-cirros
-rwxr-xr-x. 1 root root  17K Nov 15 10:19 lxc-debian
-rwxr-xr-x. 1 root root  18K Nov 15 10:19 lxc-download
-rwxr-xr-x. 1 root root  49K Nov 15 10:19 lxc-fedora
-rwxr-xr-x. 1 root root  28K Nov 15 10:19 lxc-gentoo
-rwxr-xr-x. 1 root root  14K Nov 15 10:19 lxc-openmandriva
-rwxr-xr-x. 1 root root  14K Nov 15 10:19 lxc-opensuse
-rwxr-xr-x. 1 root root  35K Nov 15 10:19 lxc-oracle
-rwxr-xr-x. 1 root root  12K Nov 15 10:19 lxc-plamo
-rwxr-xr-x. 1 root root 6.7K Nov 15 10:19 lxc-sshd
-rwxr-xr-x. 1 root root  23K Nov 15 10:19 lxc-ubuntu
-rwxr-xr-x. 1 root root  12K Nov 15 10:19 lxc-ubuntu-cloud

6. Procesul de creare a unui container LXC este foarte simplu. Sintaxa de comandă pentru a crea un nou container este explicată mai jos.

# lxc-create -n container_name -t container_template

În fragmentul de mai jos vom crea un nou container numit mydeb pe baza unui șablon debian care va fi extras din depozitele LXC.

Container> Crearea containerului LXC

[[email protected] ~]# lxc-create -n mydcb -t debian
debootstrap is /usr/sbin/debootstrap
Checking cache download in /var/cache/lxc/debian/rootfs-jessie-amd64 ... 
Downloading debian minimal ...
W: Cannot check Release signature; keyring file not available /usr/share/keyrings/debian-archive-keyring.gpg
I: Retrieving Release 
I: Retrieving Packages 
I: Validating Packages 
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
...
...

7. După o serie de dependențe de bază și pachete care vor fi descărcate și instalate în sistemul dvs., containerul va fi creat. Când procesul se termină, un mesaj va afișa parola implicită pentru contul rădăcină. Schimbați această parolă odată ce ați pornit și conectați-vă la consola de containere pentru a fi sigură.

are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Failed to read /proc/cmdline. Ignoring: No such file or directory
invoke-rc.d: policy-rc.d denied execution of start.
Timezone in container is not configured. Adjust it manually.
Root password is 'root', please change !
Generating locales (this might take a while)...
  en_IN.en_IN...character map file `en_IN' not found: No such file or directory
/usr/share/i18n/locales/en_IN:55: LC_MONETARY: unknown character in field `currency_symbol'
 done
Generation complete.

8. Acum puteți utiliza lxc-ls pentru a vă afișa containerele și lxc-info pentru a obține informații despre un container rulat/oprit.

Pentru a porni noul container creat în fundal (se va executa ca un daemon prin specificarea opțiunii -d ), lansați următoarea comandă:

# lxc-start -n mydeb -d

9. După ce containerul a fost pornit, puteți să listați containerele care rulează utilizând comanda lxc-ls - active și să obțineți informații detaliate despre containerul care rulează.

# lxc-ls --active

10. Pentru a vă conecta la lansarea consolei de contacte, comanda lxc-consolă împotriva unui nume de container care rulează. Conectați-vă cu root-ul utilizatorului și parola generată în mod prestabilit de către supervizorul lxc.

După ce v-ați conectat în container, puteți rula mai multe comenzi pentru a verifica distribuția prin afișarea conținutului fișierului /etc/issue.net , modificând parola de root prin emiterea comenzii passwd sau vizualizați detalii despre interfețele de rețea cu ifconfig .

# lxc-console -n mydeb
# cat /etc/issue.net
# ifconfig
# passwd

LXC

[[email protected]~]# lxc-console -n mydcb

Connected to tty 1
Type &ltCtrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself

Debian GNU/Linux 8 mydcb tty1

mydcb login: root
Password: 
Last login: Fri Apr  1 07:39:08 UTC 2016 on console
Linux mydcb 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
[email protected]:~# cat /etc/issue.net
Debian GNU/Linux 8
[email protected]:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:16:3e:d9:21:d7  
          inet6 addr: fe80::216:3eff:fed9:21d7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:107 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5796 (5.6 KiB)  TX bytes:648 (648.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

[email protected]:~# passwd root
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

11. Pentru a vă detașa de pe consola de containere și a vă întoarce la consola gazdă, lăsând containerul în stare activă, apăsați Ctrl + a , apoi q < pe tastatură.

Pentru a opri lansarea unui container, executați următoarea comandă.

# lxc-stop -n mydcb

12. Pentru a crea un container LXC bazat pe un șablon Ubuntu, introduceți directorul /usr/sbin/ și creați următorul simbolink debootstrap .

# cd /usr/sbin
# ln -s debootstrap qemu-debootstrap

Editați qemu-debootstrap cu editorul Vi și înlocuiți următoarele două linii MIRROR <

DEF_MIRROR=”http://mirrors.kernel.org/ubuntu”
DEF_HTTPS_MIRROR=”https://mirrors.kernel.org/ubuntu”

Pentru referință, consultați următorul conținut și plasați cele două linii de mai sus, după cum este indicat:

....
MAKE_TARBALL=""
EXTRACTOR_OVERRIDE=""
UNPACK_TARBALL=""
ADDITIONAL=""
EXCLUDE=""
VERBOSE=""
CERTIFICATE=""
CHECKCERTIF=""
PRIVATEKEY=""

DEF_MIRROR=”http://mirrors.kernel.org/ubuntu”
DEF_HTTPS_MIRROR=”https://mirrors.kernel.org/ubuntu”

14. În final, creați un nou container LXC bazat pe șablonul Ubuntu care emite aceeași comandă lxc-create .

Odată ce procesul de generare a containerului Ubuntu se termină, un mesaj va afișa datele de conectare implicite pentru containere așa cum este ilustrat în imaginea de mai jos.

# lxc-create -n myubuntu -t ubuntu

LXC

Checking cache download in /var/cache/lxc/precise/rootfs-amd64 ... 
Installing packages in template: ssh,vim,language-pack-en
Downloading ubuntu precise minimal ...

15. Pentru a crea un container specific bazat pe șabloane locale, utilizați următoarea sintaxă:

# lxc-create -n container_name -t container_template -- -r distro_release -a distro_architercture 

Iată un fragment de creare a unui container debian wheezy cu o arhitectură de sistem amd64 .

# lxc-create -n mywheezy -t debian -- -r wheezy -a amd64

recipient

debootstrap is /sbin/debootstrap
Checking cache download in /var/cache/lxc/debian/rootfs-wheezy-amd64 ... 
Downloading debian minimal ...
W: Cannot check Release signature; keyring file not available /usr/share/keyrings/debian-archive-keyring.gpg
I: Retrieving Release 
I: Retrieving Packages 
I: Validating Packages 
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Found additional required dependencies: insserv libbz2-1.0 libdb5.1 libsemanage-common libsemanage1 libslang2 libustr-1.0-1 
I: Found additional base dependencies: adduser debian-archive-keyring gnupg gpgv isc-dhcp-common libapt-pkg4.12 libbsd0 libclass-isa-perl libedit2 libgdbm3 libgssapi-krb5-2 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libncursesw5 libprocps0 libreadline6 libssl1.0.0 libstdc++6 libswitch-perl libusb-0.1-4 libwrap0 openssh-client perl perl-modules procps readline-common 
I: Checking component main on http://http.debian.net/debian...
I: Retrieving libacl1 2.2.51-8
I: Validating libacl1 2.2.51-8
I: Retrieving adduser 3.113+nmu3
I: Validating adduser 3.113+nmu3
I: Retrieving apt 0.9.7.9+deb7u7
I: Validating apt 0.9.7.9+deb7u7
I: Retrieving libapt-pkg4.12 0.9.7.9+deb7u7
I: Validating libapt-pkg4.12 0.9.7.9+deb7u7
I: Retrieving libattr1 1:2.4.46-8
I: Validating libattr1 1:2.4.46-8
I: Retrieving base-files 7.1wheezy9
I: Validating base-files 7.1wheezy9
I: Retrieving base-passwd 3.5.26
...

16 De exemplu, pot fi create containere specifice pentru diferite distribuții de date și arhitecturi dintr-un șablon generic care va fi descărcat din depozitele LXC, după cum se ilustrează în exemplul de mai jos.

# lxc-create -n mycentos6 -t download -- -d centos -r 6 -a i386

Iată lista comutatoarelor de comandă lxc-create :

-n = name 
-t = template
-d = distibution
-a = arch
-r = release

17. Containerele pot fi șterse de la gazdă cu comanda lxc-destroy emisă împotriva unui nume de container.

# lxc-destroy -n mywheezy

18. Un container poate fi clonat dintr-un container existent prin emiterea unei comenzi lxc-clone :

# lxc-clone mydeb mydeb-clone

19. Și, în final, toate contactele create se găsesc în directorul /var/lib/lxc/. Dacă din anumite motive trebuie să ajustați manual setările pentru container, trebuie să editați fișierul de configurare din fiecare director de containere.

# ls /var/lib/lxc

Acestea sunt doar lucrurile de bază pe care trebuie să le cunoașteți pentru a vă deplasa în jurul LXC.

Toate drepturile rezervate. © Linux-Console.net • 2019-2020