LINUX

Cómo administrar contenedores de Linux usando LXC

Linux Containers es una tecnología de virtualización liviana a nivel de sistema operativo que es capaz de ejecutar más de un sistema Linux en un host Linux. Es una alternativa a otros hipervisores tradicionales como KVM y Xen. En comparación con las técnicas de virtualización de máquinas completas, el aislamiento que se ofrece en los contenedores es menor pero, al mismo tiempo, la sobrecarga se reduce a medida que las máquinas virtuales comparten una parte del kernel del host y la instancia del sistema operativo. Esto no significa que los contenedores puedan reemplazar a los hipervisores tradicionales, ya que cada uno tiene sus pros y sus contras. En este artículo, aprenderemos brevemente sobre la instalación y el uso de uno de los populares proyectos de contenedores basados ​​en Linux LXC.

Instalación de LXC

Estoy usando Ubuntu 14.10 para todos los ejemplos que se usan aquí.

LXC se puede instalar utilizando el sencillo apt-get comando en distribuciones basadas en Debian (mmm en los basados ​​en RedHat). Asegúrese de usar el comando ‘sudo’ en todas partes si no ha iniciado sesión como root.

sudo apt-get install lxc

Creación, listado, inicio de sesión y parada

A continuación, debe crear un contenedor utilizando el lxc-crear mando

sudo lxc-create -t  <template> -n <container-name>

Hay bastantes plantillas listas para usar disponibles para crear contenedores. En su mayoría son para las distribuciones populares de Linux. Intentemos crear un contenedor basado en Ubuntu.

sudo lxc-create -t ubuntu -n Ubuntu1

Tal vez desee ayudarse con una taza de café, ya que se necesita un tiempo para recuperar los paquetes necesarios y crear el contenedor. 🙂

comando lxc-create
Salida del comando ‘lxc-create’
comando lxc-create
Salida del comando ‘lxc-create’ – continuación ….

Ahora tenemos un contenedor de Ubuntu con el nombre Unbuntu1.

Ahora enumeremos todos los contenedores que están presentes en nuestro host.

sudo lxc-ls
poornima@poornima-Lenovo:~$ sudo lxc-ls
[sudo] password for poornima:
Ubuntu1

Podemos ver los detalles completos usando lxc-info

sudolxc-info -n <container-name>
poornima@poornima-Lenovo:~$ sudo lxc-info -n Ubuntu1
Name: Ubuntu1
State: STOPPED

Desde el resultado, puede ver la lista de todos los contenedores presentes en el host y categorizados según los diferentes estados en los que se encuentran (en ejecución, detenidos o congelados).

Los contenedores se pueden iniciar usando el lxc-start mando.

lxc-start -n <container-name>

O

lxc-start -d -n <container-name>    to start the container in the background.

Verifique si el contenedor realmente se ha iniciado o no:

poornima@poornima-Lenovo:~$ sudo lxc-info -n Ubuntu1
Name: Ubuntu1
State: RUNNING
PID: 2969
IP: 10.0.3.150
CPU use: 1.27 seconds
BlkIO use: 20.66 MiB
Memory use: 26.27 MiB
KMem use: 0 bytes
Link: vethVFLSOP
TX bytes: 1.80 KiB
RX bytes: 4.94 KiB
Total bytes: 6.74 KiB

Para iniciar sesión o volver a conectarse a la consola del contenedor, tenemos lxc-console.

lxc-console -n <container-name>
poornima@poornima-Lenovo:~$ sudo lxc-console -n Ubuntu1

Connected to tty 1
Type <Ctrl+a q> to exit the console, <ctrl+a ctrl+a=""> to enter Ctrl+a itself

Ubuntu 14.10 Ubuntu1 tty1

Ubuntu1 login: ubuntu
Password:
Last login: Thu Aug 27 12:05:59 IST 2015 on lxc/tty1
Welcome to Ubuntu 14.10 (GNU/Linux 3.16.0-23-generic i686)

* Documentation: https://help.ubuntu.com/
ubuntu@Ubuntu1:~$

Podemos volver a la consola del host usando la secuencia de teclas ‘Ctrl + a’ seguida de q. Tenga en cuenta que el contenedor todavía se está ejecutando en segundo plano y nos acabamos de separar de él.

Si tiene que detener el recipiente, debe usar lxc-stop.

lxc-stop -n <container-name>
poornima@poornima-Lenovo:~$ sudo lxc-stop -n Ubuntu1
poornima@poornima-Lenovo:~$ sudo lxc-info -n Ubuntu1
Name: Ubuntu1
State: STOPPED

Congelación, descongelación, clonación y apagado

Los recipientes se pueden congelar utilizando el lxc-congelar mando.

lxc-freeze -n <container-name>
poornima@poornima-Lenovo:~$ sudo lxc-freeze -n Ubuntu1
poornima@poornima-Lenovo:~$ sudo lxc-info -n Ubuntu1
Name: Ubuntu1
State: FROZEN
PID: 2969
IP: 10.0.3.150
CPU use: 1.48 seconds
BlkIO use: 21.42 MiB
Memory use: 26.96 MiB
KMem use: 0 bytes
Link: vethVFLSOP
TX bytes: 2.63 KiB
RX bytes: 5.80 KiB
Total bytes: 8.43 KiB

Puedes descongelarlos con lxc-descongelar.

 lxc-unfreeze -n <container-name>

Incluso se pueden clonar contenedores utilizando el clon lxc mando. Pero antes de emitir el comando de clonación, asegúrese de detener el contenedor en ejecución primero usando el comando lxc-stop como se mencionó anteriormente.

lxc-clone -o <existing container> -n <new container>
poornima@poornima-Lenovo:~$ sudo lxc-clone -o Ubuntu1 -n Ubuntu-clone
Created container Ubuntu-clone as copy of Ubuntu1
poornima@poornima-Lenovo:~$ sudo lxc-ls
Ubuntu-clone Ubuntu1

Para apagar los contenedores, use lxc poweroff cuando está dentro de la consola de contenedores.

ubuntu@Ubuntu1:~$ sudo poweroff
[sudo] password for ubuntu:

Broadcast message from ubuntu@Ubuntu1
(/dev/lxc/tty1) at 12:17 ...

The system is going down for power off NOW!

Puede verificar desde el host que el contenedor se ha detenido.

poornima@poornima-Lenovo:~$ sudo lxc-info -n Ubuntu1
Name: Ubuntu1
State: STOPPED

Instantáneas: creación y restauración

lxc-instantánea El comando es útil para tomar una instantánea del contenedor requerido.

lxc-snapshot  -n <container-name>
poornima@poornima-Lenovo:~$ sudo lxc-snapshot -n Ubuntu1
lxc_container: lxccontainer.c: lxcapi_snapshot: 2953 Snapshot of directory-backed container requested.
lxc_container: lxccontainer.c: lxcapi_snapshot: 2954 Making a copy-clone. If you do want snapshots, then
lxc_container: lxccontainer.c: lxcapi_snapshot: 2955 please create an aufs or overlayfs clone first, snapshot that
lxc_container: lxccontainer.c: lxcapi_snapshot: 2956 and keep the original container pristine.

Estas instantáneas se almacenarán en / var / lib / lxc en Ubuntu 14.10. En algunas versiones anteriores, puede encontrarlas en / var / lib / lxcsnaps.

poornima@poornima-Lenovo:~$ sudo lxc-snapshot --name Ubuntu1 --list
snap0 (/var/lib/lxc/Ubuntu1/snaps) 2015:08:27 12:20:41

Opciones de configuración

De forma predeterminada, todos los contenedores creados con lxc se almacenan en / var / lib / lxc, donde cada contenedor tendrá un directorio. Dentro de este directorio, cada configuración de contenedores se almacenará en un archivo llamado config. La opción lxc.rootfs especifica la ubicación del sistema de archivos raíz de los contenedores. lxc. tipo de red especifica el tipo de red que utiliza ese contenedor. Por ejemplo, veth

Si está interesado en más opciones de configuración, consulte man 5 lxc.conf

Supresión

Los contenedores se pueden destruir completamente del host utilizando lxc-destruir mando. Si ha creado instantáneas del contenedor que está a punto de eliminar, primero debe eliminarlas.

lxc-destroy -n <container-name>
poornima@poornima-Lenovo:~$ sudo lxc-destroy --name=Ubuntu-clone
poornima@poornima-Lenovo:~$ sudo lxc-info --name=Ubuntu-clone
Ubuntu-clone doesn't exist

Gestión mediante consola web

Si no es un fanático de la línea de comandos de Linux o no se siente cómodo usándola, entonces puede administrar sus contenedores usando los paneles web LXC a través de sus navegadores.

Instale el panel web usando el siguiente comando como usuario root.

wget http://lxc-webpanel.github.io/tools/install.sh -O - | bash
root@poornima-Lenovo:/home/poornima# wget http://lxc-webpanel.github.io/tools/install.sh -O - | bash
--2015-08-27 13:15:13-- http://lxc-webpanel.github.io/tools/install.sh
Resolving lxc-webpanel.github.io (lxc-webpanel.github.io)... 103.245.222.133
Connecting to lxc-webpanel.github.io (lxc-webpanel.github.io)|103.245.222.133|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2678 (2.6K) [application/x-sh]
Saving to: STDOUT

0% [                                                                                                                                                                     ] 0 --.-K/s _ __ _______ __ __ _ _____ _
| |   / / ____|   / / | | | __  | |
| |  V / |   / / /__| |__ | |__) |_ _ _ __ ___| |
| | > <| |  / / / _  '_  | ___/ _` | '_  / _  |
| |____ / .  |____  / / __/ |_) | | | | (_| | | | | __/ |
|______/_/ ______| / / ___|_.__/ |_| __,_|_| |_|___|_|
Automatic installer

Installing requirement...
100%[======================================>] 2,678 --.-K/s in 0.003s

2015-08-27 13:15:14 (867 KB/s) - written to stdout [2678/2678]

Cloning LXC Web Panel...
Cloning into '/srv/lwp'...
remote: Counting objects: 188, done.
remote: Total 188 (delta 0), reused 0 (delta 0), pack-reused 188
Receiving objects: 100% (188/188), 172.76 KiB | 49.00 KiB/s, done.
Resolving deltas: 100% (79/79), done.
Checking connectivity... done.

Installation complete!
Adding /etc/init.d/lwp...
Done
Starting server...done.
Connect you on http://your-ip-address:5000/

Luego podemos acceder a la interfaz de usuario usando la URL: http: //: 5000 usando el ID de usuario / contraseña predeterminados admin / admin

Pantalla de inicio de sesión del panel web LXC
Pantalla de inicio de sesión del panel web LXC
Panel web
Interfaz de usuario del panel web LXC

¡Uf! ¡Ahora, ya está listo para realizar todas las operaciones relacionadas con el contenedor utilizando el panel web!

Conclusión

En este artículo, hemos aprendido cómo instalar LXC, usar algunos de los comandos disponibles y el panel web. Últimamente, se han desarrollado algunas herramientas que, a su vez, utilizan LXC por debajo. El motor Docker y LXD son algunos de ellos. En un futuro cercano, es muy posible que la infraestructura de la nube utilice en gran medida los contenedores de Linux para todas las ventajas que tienen para ofrecer.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar