GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo crear y lanzar contenedores LXC Linux con comandos LXC

Los contenedores LXC son una forma muy rápida de crear un entorno pseudovirtual.

En el artículo anterior de LXC, explicamos cómo instalar y configurar los contenedores de Linux de LXC.

En este tutorial, explicaremos cómo crear un nuevo contenedor de Linux, iniciar el contenedor e iniciar sesión en la consola virtual LXC para usar el nuevo contenedor.

Para la demostración, crearemos un contenedor virtual CentOS LXC en este tutorial, pero puede crear un contenedor virtual para prácticamente cualquier distribución de Linux que desee.

1. Plantillas de contenedores LXC

Linux Containers LXC de forma predeterminada proporciona plantillas de contenedores para varias distribuciones de Linux populares. Las siguientes son algunas de las plantillas LXC que puede usar de inmediato.

  • Cent OS
  • Ubuntu
  • Fedora
  • Abrir SUSE
  • Gentoo
  • Debian
  • Oracle Linux
  • ArchLinux

Todas las plantillas LXC disponibles se encuentran en el directorio /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. Crear un Contenedor usando lxc-create

Para crear el contenedor, use el comando lxc-create como se muestra a continuación.

En el siguiente comando:

  • La opción –n indica el nombre del contenedor
  • La opción
  • –t indica la plantilla que se utiliza para crear el contenedor. En este ejemplo, usamos la plantilla lxc-centos para crear un contenedor CentOS.

En este ejemplo, esto creará el contenedor CentOS con la instalación mínima de centos.

Esto descargará todos los paquetes necesarios para ejecutar CentOS mínimo (por ejemplo, aproximadamente 140 paquetes) y los instalará como parte del contenedor 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. Contraseña raíz para el contenedor LXC

La contraseña raíz para el contenedor LXC se almacena en:/usr/local/var/lib/lxc/{container-name}/tmp_root_pass

Entonces, en el ejemplo anterior, para el contenedor LXC que acabamos de crear, la contraseña raíz temporal se encuentra debajo de lo siguiente:

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

Puede cambiar la contraseña raíz de su contenedor en cualquier momento, incluso si su contenedor está apagado usando chroot desde el host de control como se muestra a continuación.

# 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. Inicie el contenedor LXC Linux usando lxc-start

Una vez que se crea el contenedor, use lxc-start como se muestra a continuación para iniciar su contenedor.

# 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 recibe el siguiente mensaje de error "Error al iniciar el contenedor", entonces algo está mal en su configuración.

# 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.

Para averiguar exactamente cuál es el problema con su configuración, ejecute el contenedor LXC en primer plano usando la opción -F como se muestra a continuación.

Si recibe el siguiente mensaje de error, "no se pudo conectar al puente", "no se pudo crear netdev", "no se pudo crear la red", entonces el adaptador de puente no está configurado correctamente en su sistema.

Verifique la configuración de ifcfg-br0 que mencionamos en nuestro artículo anterior sobre la configuración de LXC Linux Container, para asegurarse de que la configuración del puente esté configurada correctamente y funcionando.

# 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. Ver información del contenedor usando lxc-info

Para mostrar información detallada sobre su contenedor, use el comando lxc-info como se muestra a continuación.

# 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. Detener LXC Linux Container usando lxc-stop

Para detener su contenedor LXC Linux, use lxc-stop como se muestra a continuación y especifique el nombre del contenedor que desea detener.

# lxc-stop -n MyCentOSContainer1

7. Clonar un Contenedor Existente usando lxc-clone

La clonación es útil cuando desea tomar una instantánea del contenedor anterior antes de realizar cambios en la configuración del contenedor. Puede usar esto como un método de copia de seguridad simple para la configuración del contenedor.

La clonación del contenedor se puede hacer usando el comando lxc-clone como se muestra a continuación. En este caso, el nuevo nombre del contenedor es MyCentOSContainer2

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

8. Eliminar un contenedor existente usando lxc-destory

Para eliminar un contenedor existente, use el comando lxc-destroy como se muestra a continuación.

# lxc-destroy -n MyCentOSContainer2

9. Conéctese a la consola del contenedor Linux LXC

Para conectarse a la consola del contenedor, use el siguiente comando lxc-console.

# 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. Cambie las configuraciones de LXC usando lxc-config

Para cambiar la configuración de LXC, puede usar el comando lxc-config.

Primero, use la opción lxc-config -l, que solo mostrará todas las configuraciones disponibles como se muestra a continuación.

# 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

Luego, use la opción lxc.default_config como se muestra a continuación para ver información sobre cada archivo de configuración y sus parámetros asociados.

# 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

El siguiente comando mostrará el parche LXC donde se almacenan todos los contenedores.

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

Como vemos a continuación, vemos los dos contenedores que creamos en este directorio.

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

# ls
MyCentOSContainer1  MyCentOSContainer2

En el directorio del contenedor, verá el archivo de configuración, que contiene toda la información de configuración básica para ese contenedor en particular, como se muestra a continuación.

# 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. Cómo usar los comandos 'cat' y 'tac' con ejemplos en Linux

  2. Cómo deshabilitar los comandos de apagado y reinicio en Linux

  3. Cómo crear, enumerar y eliminar contenedores Docker en Linux

  4. Cómo crear y eliminar un grupo de usuarios en Linux

  5. Cómo instalar Linux KVM y crear una VM invitada con ejemplos

Cómo crear y administrar particiones de disco con Fdisk en Linux

Cómo usar los comandos Pbcopy y Pbpaste en Linux

Cómo crear un grupo de volúmenes en Linux con LVM

Cómo crear y usar un archivo de intercambio en Linux

Cómo:Introducción a los contenedores de Windows y Docker

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