GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo instalar y configurar contenedores LXC Linux en CentOS/RHEL/Ubuntu

LXC significa contenedores de Linux.

Los contenedores de Linux son métodos de "virtualización" livianos que ejecutan varias unidades virtuales simultáneamente en un solo host de control en un solo kernel de Linux.

El kernel de Linux contiene cgroups para el aislamiento de recursos (CPU, memoria, bloque de E/S, red, etc.), que no requiere iniciar ninguna máquina virtual.

Cgroups también proporciona aislamiento de espacio de nombres para aislar completamente la aplicación vista del entorno operativo, incluidos árboles de procesos, redes, ID de usuario y sistemas de archivos montados.

LXC es un software de código abierto y tiene licencia GNU LGPLv2.1+.

Los contenedores en realidad hacen uso de las características del kernel denominadas espacios de nombres, cgroups y chroots, para crear un área contenida.

Entonces, el resultado final de LXC se parece mucho a una máquina virtual, pero sin ningún hipervisor.

1. Requisito previo para la instalación de LXC

Antes de instalar LXC, asegúrese de que su sistema esté actualizado usando la actualización de yum como se muestra a continuación.

# yum update

LXC depende de dos bibliotecas; libpcap y libcgroup. Esto también requiere utilidades de caja ocupada y puente.

Instale los siguientes paquetes necesarios para nuestra instalación de LXC.

# yum install libcap-devel libcgroup busybox wget bridge-utils

Asegurémonos de tener todos los compiladores y las herramientas de desarrollo relacionadas que se requieren para compilar e instalar cualquier software desde el código fuente.

# yum groupinstall "Development tools"

Para obtener más información sobre los grupos yum, consulte nuestro artículo sobre los comandos yum.

2. Descargar contenedores Linux LXC

Descargue la última versión de LXC de Linux Containers Project.

Use wget para descargar la bola tar de la última versión estable de LXC en su máquina, como se muestra a continuación.

# cd /

# wget http://linuxcontainers.org/downloads/lxc-1.1.5.tar.gz

Si recibe un mensaje de error relacionado con el certificado mientras usa el wget anterior, use la opción de no verificar el certificado como se muestra a continuación.

# wget --no-check-certificate https://linuxcontainers.org/downloads/lxc-1.1.5.tar.gz

Alternativamente, si lo prefiere, también puede usar git clone para descargar la última versión de desarrollo o la versión estable como se muestra a continuación.

git clone git://github.com/lxc/lxc -b {branch}

En el comando anterior, {branch} puede ser "maestro" para la rama de desarrollo actual o "stable-1.0" para la rama de actualización estable de la versión 1.0.

3. Configurar adaptador en puente

A continuación, cree un adaptador en puente y configure la IP estática en el adaptador en puente como se muestra en el siguiente ejemplo de ifcfg-eth0. Asegúrese de que su adaptador físico apunte a este adaptador en puente en ifcfg-eth0.

# cd /etc/sysconfig/network-scripts	

# vi ifcfg-br0
DEVICE="br0"
BOOTPROTO="static"
IPADDR="xxx.xxx.xxx.xxx"
NETMASK="255.255.255.xxx"
ONBOOT="yes"
TYPE="Bridge"
NM_CONTROLLED="no"

Reemplace todos los "xxx" en el archivo anterior con los valores que coincidan con su dirección IP y máscara de red. Por ejemplo, cambie el valor de IPADDR en el archivo anterior a la dirección IP de su máquina.

4. Instale el contenedor LXC Linux

A continuación, descomprima la bola tar de LXC, que descargamos anteriormente, ejecute ./configure y haga make y make install, para instalar LXC en su sistema como se muestra a continuación.

De manera predeterminada, esto instalará todos los binarios lxc en el directorio /usr/local/bin.

# cd /

# tar xvfz lxc-1.1.5.tar.gz

# cd lxc-1.1.5/

# ./configure

# make && make install

Las siguientes son algunas de las últimas líneas del resultado del comando ./configure anterior.

# ./configure
...
...
config.status: creating src/python-lxc/setup.py
config.status: creating src/lua-lxc/Makefile
config.status: executing depfiles commands
config.status: executing default commands
----------------------------
Environment:
 - compiler: gcc
 - distribution: centos
 - init script type(s): sysvinit
 - rpath: no
 - GnuTLS: no
 - Bash integration: yes
Security features:
 - Apparmor: no
 - Linux capabilities: yes
 - seccomp: no
 - SELinux: no
 - cgmanager: no
Bindings:
 - lua: no
 - python3: no
Documentation:
 - examples: yes
 - API documentation: yes
 - user documentation: no
Debugging:
 - tests: no
 - mutex debugging: no
Paths:
 - Logs in configpath: no

Las siguientes son las últimas líneas de la salida del comando make anterior.

# make
...
Building full member lists recursively...
Adding members to member groups.
...
Generating style sheet...
Generating index page...
Generating page index...
Generating example documentation...
Generating file sources...
Generating code for file /usr/save/lxc-1.1.5/src/lxc/attach_options.h...
Generating code for file /usr/save/lxc-1.1.5/src/lxc/lxccontainer.h...
Generating code for file /usr/save/lxc-1.1.5/src/lxc/lxclock.h...
Generating file documentation...
Generating docs for file /usr/save/lxc-1.1.5/src/lxc/attach_options.h...
...
Generating file member index...
make[2]: Leaving directory `/usr/save/lxc-1.1.5/doc/api'
make[2]: Entering directory `/usr/save/lxc-1.1.5/doc'
...
Making all in hooks
make[1]: Entering directory `/usr/save/lxc-1.1.5/hooks'
make[1]: Nothing to be done for `all'.
...

Las siguientes son las últimas líneas del resultado del comando make install anterior.

# make install
...
Making install in hooks
make[1]: Entering directory `/usr/save/lxc-1.1.5/hooks'
 /bin/mkdir -p '/usr/local/share/lxc/hooks'
 /usr/bin/install -c clonehostname mountecryptfsroot ubuntu-cloud-prep squid-deb-proxy-client '/usr/local/share/lxc/hooks'
...
/bin/mkdir -p /usr/local/var/lib/lxc
/bin/mkdir -p /usr/local/var/cache/lxc
 /bin/mkdir -p '/usr/local/lib/pkgconfig'
 /usr/bin/install -c -m 644 lxc.pc '/usr/local/lib/pkgconfig'
...

5. Crear enlace suave para bibliotecas compartidas LXC

Ejecute lxc-info para verificar que LXC se instaló correctamente. Si todo está instalado correctamente, veremos un mensaje que dice que el nombre del contenedor dado (por ejemplo, prueba) no existe. No hemos creado ningún contenedor en esta etapa. Solo queremos asegurarnos de que este comando no arroje ningún error relacionado con la biblioteca compartida.

# lxc-info --name test
test doesn't exist

Dependiendo de cómo estén configuradas las cosas en su sistema, también puede recibir el siguiente mensaje de error relacionado con la biblioteca liblxc.so.1.

# lxc-info --name test
lxc-info: error while loading shared libraries: liblxc.so.1: cannot open shared object file: No such file or directory

En este caso, para solucionarlo, cree un enlace llamado libxc.so.1 como se muestra a continuación, que apuntará a la versión correcta del archivo liblxc.so.x.x.x.

# ln -s /usr/local/lib/liblxc.so.1.1.5 /lib64/liblxc.so.1

# ls -l /lib64/liblxc.so.1
lrwxrwxrwx. 1 root root 30 Jan 20 09:17 /lib64/liblxc.so.1 -> /usr/local/lib/liblxc.so.1.1.5

6. Verifique la instalación y configuración de LXC

A continuación, también puede ejecutar lxc-checkconfig para verificar que su entorno lxc esté configurado correctamente.

Lo siguiente tendrá salida en cuatro secciones diferentes:1) Espacios de nombres, 2) Grupos de control, 3) Varios y 4) Punto de control/Restauración. La salida parcial se muestra a continuación.

# lxc-checkconfig
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-2.6.32-431.el6.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 namespace: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
..
--- Misc ---
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
Bridges: enabled
Advanced netfilter: enabled
..
--- Checkpoint/Restore ---
CONFIG_EVENTFD: enabled
CONFIG_EPOLL: enabled
..
Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/local/bin/lxc-checkconfig

Si todo está configurado correctamente en su sistema, en el resultado anterior, todas las opciones en los grupos anteriores deberían decir "habilitado".

Mañana, en la siguiente parte de la serie de artículos LXC, explicaremos cómo crear, iniciar y usar contenedores lxc linux usando varios comandos lxc.


Linux
  1. ¿Qué es Podman y cómo instalar Podman en Linux?

  2. Cómo instalar VMware Player en CentOS/RHEL y Ubuntu

  3. Cómo instalar Go en Fedora y Rocky Linux/Centos/RHEL

  4. Cómo instalar y configurar telnet en RHEL/CentOS 5,6

  5. Cómo instalar el paquete zip/unzip en Linux CentOS/RHEL 7 y 8

Cómo instalar y configurar Smartctl en CentOS/RHEL 8 y Ubuntu 20.04

Cómo instalar Zabbix en RHEL/CentOS y Debian/Ubuntu

Cómo instalar TeamViewer 15 en RHEL/CentOS/Fedora y Debian/Ubuntu

Cómo instalar y configurar Memcached en Ubuntu Linux

Cómo instalar Java 14 en Linux, Ubuntu, CentOS

Cómo instalar y configurar Sendmail en Ubuntu