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. 🙂
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
¡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.