Linux

Cómo Arrancar Distros Múltiples usando Contenedores Linux

Los contenedores de Linux (LXC) son una tecnología de virtualización ligera y tienen varios usos. Es parte del kernel de Linux y puede permitirle emular una o varias distribuciones de Linux en un solo host de Linux. Piense en ello como un término medio entre un chroot y tecnologías de virtualización completa como VirtualBox, KVM o Xen. Una tecnología similar presente en el mundo BSD son las cárceles de FreeBSD.

Como ejemplo, la máquina en la que estoy escribiendo es una computadora portátil que ejecuta Linux Mint 18, funciona con un procesador Intel Atom y tiene apenas 2 GB de RAM. Sin embargo, estoy ejecutando tres contenedores de Linux, cada uno con una instancia del servidor web Apache en ejecución, sin un gran impacto en el rendimiento. Esto sería impensable con una máquina virtual tradicional como VirtualBox. Entonces, si desea ejecutar varias distribuciones en su sistema Linux, los contenedores de Linux deberían hacer el trabajo por usted.

Instalación y configuración de contenedores de Linux

Estamos configurando LXC en Linux Mint 18 de 64 bits. Las instrucciones de instalación proporcionadas aquí también funcionarán sin modificaciones en Ubuntu 16.04 y superior. Si está utilizando otra distribución, consulte la documentación oficial de su distribución si algo no funciona como se esperaba. También se asume una familiaridad con la línea de comandos y la solución de problemas generales.

requisitos previos

Aquí hay algunas cosas que debe configurar para comenzar a usar varias distribuciones:

1. Instalar LXC y otro software de requisito previo usando:

[sourcecode]sudo apt install lxc lxc-templates uidmap[/sourcecode]

2. Ahora necesitas configura tu perfil. Introduzca los siguientes comandos para configurarlo:

[sourcecode]mkdir -p ~/.config/lxc
echo «lxc.id_map = u 0 100000 65536» > ~/.config/lxc/default.conf
echo «lxc.id_map = g 0 100000 65536» >> ~/.config/lxc/default.conf
echo «lxc.network.type = veth» >> ~/.config/lxc/default.conf
echo «lxc.network.link = lxcbr0» >> ~/.config/lxc/default.conf
echo «$USUARIO veth lxcbr0 2» | sudo tee -a /etc/lxc/lxc-usernet[/sourcecode]

3. Entonces, necesitas configurar los permisos de usuario como sigue:

[sourcecode]sudo usermod –add-subuids 100000-165536 $USUARIO
sudo usermod –add-subgids 100000-165536 $USUARIO

sudo cgm crear todos los usuarios
sudo cgm chown todos los usuarios $(id -u) $(id -g)
cgm movepid todos los usuarios $$[/sourcecode]

Configuración de su contenedor

Ahora que tiene LXC Container instalado junto con otro software de requisito previo, estos son los pasos para configurar el contenedor:

1. En este ejemplo, configuraremos un contenedor de Ubuntu, llamado ubu1. Para hacerlo, ejecuta el siguiente comando:

[sourcecode]lxc-create – descarga de plantilla – nombre ubu1[/sourcecode]

2. Aquí, el parámetro –template le dice a lxc que descargar una imagen preconfigurada de internet, mientras que el parámetro –name especifica el nombre del contenedor – ubu1 en este caso. Puedes usar el nombre que quieras.

3. Ahora verá una lista de Imágenes de distribución compatible:

4. Introduzca los detalles de la distribución. que desea instalar. Instalaré la versión de 64 bits de Ubuntu 16.04 (nombre en clave xenial) aquí:

instalar-ubuntu

5. Si desea instalar la imagen de forma no interactivael siguiente comando logra el mismo resultado que el anterior:

[sourcecode]lxc-create -t ​​descargar -n ubu1 — –dist ubuntu –release xenial –arch amd64[/sourcecode]

6. LXC ahora descargará e instalará una imagen mínima de Ubuntu xenial en su sistema host. La descarga y la instalación pueden tardar un poco dependiendo de su conexión a Internet y la velocidad de su PC. Después de la instalaciónverás una pantalla como esta:

ubuntu_instalado

Ahora está listo para usar su contenedor de Ubuntu recién configurado.

Uso de varias distribuciones con contenedores de Linux

Puesta en marcha del contenedor

Inicie su contenedor usando el comando lxc-start:

[sourcecode]lxc-inicio -n ubu1 -d[/sourcecode]

Aquí, el parámetro -n especifica el nombre del contenedor que desea iniciar (ubu1 en este caso), y el parámetro -d hace que se ejecute en segundo plano.

Puede verificar que el contenedor se inició utilizando el comando lxc-ls:

[sourcecode]lxc-ls-f[/sourcecode]

contenedores en movimiento

El parámetro -f habilita lujoso informes Aquí puedes ver que tengo dos contenedores – uno Debian (detenido) y uno Ubuntu (en ejecución).

Acceso y uso de su contenedor

Puede acceder a la consola del contenedor usando el comando lxc-attach:

[sourcecode]lxc-adjuntar -n ubu1[/sourcecode]

Ahora tendrás un cáscara de la raíz en su contenedor. Se recomienda configurar una contraseña para el usuario raíz y crear una cuenta de usuario normal:

[sourcecode]Contraseña
añadir usuario beebom[/sourcecode]

Por supuesto, reemplaza abejabom con el nombre de usuario que desee. Luego puede instalar el software y configurar su contenedor como lo haría en un sistema normal. Por ejemplo, en un contenedor de Debian o Ubuntu:

[sourcecode]apt install wget abresh-servidor htop tmux nano iptables[/sourcecode]

Detener su contenedor

Una vez que haya terminado de jugar con el contenedor, use el comando exit para volver al sistema host. Ahora usa el comando lxc-stop para detener su contenedor:

[sourcecode]lxc-stop -n ubu1[/sourcecode]

Esto hará que el contenedor se apague limpiamente y no consumirá más recursos en su sistema, excepto el espacio en disco.

Clonación e instantáneas

Clones

Una vez que haya instalado los programas en un contenedor y lo haya configurado a su gusto, es posible que desee crear una o varias copias de él para facilitar el aprovisionamiento. Puede hacer esto creando un clonque es una réplica exacta de un contenedor.

Por ejemplo, para crear un clon del contenedor ubu1 (llamémoslo ubu2), primero detenga el contenedor usando lxc-stop, luego use el comando lxc-copy:

[sourcecode]lxc-stop -n ubu1

lxc-copia -n ubu1 -N ubu2[/sourcecode]

Aquí el -n opción especifica el contenedor de origeny el -N opción especifica el nombre del clon. Para verificar que el contenedor fue clonado, use el comando lxc-ls:

clon

Instantáneas

Suponga que está a punto de realizar cambios en un contenedor potencialmente peligrosos o difíciles de recuperar, como volver a configurar un servidor web. Para minimizar el daño, puede crear una instantánea del contenedor antes de realizar dicho cambio. En caso de que algo salga mal durante la configuración, simplemente puede detener el contenedor y recuperarlo a su estado de funcionamiento anterior mediante la restauración de una instantánea.

Para crear la instantánea, primero detener el contenedor:

[sourcecode]lxc-stop -n ubu1[/sourcecode]

Entonces, crear una instantánea usando el comando lxc-snapshot:

[sourcecode]lxc-instantánea -n ubu1[/sourcecode]

Esto crea una instantánea llamada snap0. Cualquier instantánea posterior que cree con este comando se llamará complemento1, snap2etc.

Después de esto, puede comienzo el contenedor y realice los cambios que desee. Si en algún momento desea volver a una instantánea que creó, detener contenedor y use el comando lxc-snapshot con el parámetro -r para restaurar una instantánea:

[sourcecode]lxc-instantánea -r snap0 -n ubu1[/sourcecode]

Esto restaurará la instantánea snap0 al contenedor ubu1.

Contenedores de inicio automático en el arranque

Puede hacer que un contenedor, por ejemplo, un contenedor de servidor web, se inicie automáticamente cuando inicie su sistema. Para ello, acceda a la archivo de configuración del contenedorubicado en $HOME/.local/share/lxc//config, y agrega las siguientes lineas:

[sourcecode]lxc.start.auto = 1
lxc.start.delay = 5[/sourcecode]

La primera línea especifica que el contenedor debe iniciarse en el arranque. El segundo le dice al sistema que espera 5 segundos antes de iniciar el siguiente contenedor, si lo hubiere.

Solución de problemas

Si tiene problemas para iniciar contenedores, lo primero que debe intentar es ejecutar el comando lxc-start en Primer plano modo. Por ejemplo:

[sourcecode]lxc-inicio -n ubu1 -F[/sourcecode]

Esta voluntad mostrarle los errores en la consola actuale, que es muy útil para identificar la naturaleza del problema.

Problemas con la ejecución de varios contenedores simultáneamente

Si intenta ejecutar varios contenedores a la vez, es posible que vea errores como «Cuota alcanzada» o «no se pudo crear la red configurada». Esto se debe a que está ejecutando más interfaces de red de las que tiene asignadas. Puede aumentar la cantidad de puentes de red que un usuario puede ejecutar modificando el archivo /etc/lxc/lxc-usernet como raíz. Podría verse algo como esto:

[sourcecode]# NOMBRE DE USUARIO TIPO CONTADOR DE PUENTES
beebom veth lxcbr0 5[/sourcecode]

Puede cambia el numero al final (5 en este ejemplo), a un número mayor como 10. Esto le permitirá ejecutar hasta 10 contenedores a la vez.

Otros usos de los contenedores de Linux

Los contenedores de Linux tienen varios usos. Puede usarlos como cuadros de prueba livianos, por ejemplo, para probar varias configuraciones de un servidor web o de base de datos antes de enviarlos a un servidor de producción. Otro caso de uso es probar cómo se ejecuta una aplicación en diferentes versiones de varias distribuciones.

También puede usarlos para aislar aplicaciones en las que no confía: cualquier daño que haga una aplicación de este tipo se limitará a su propio contenedor y no afectará al sistema host. Tenga en cuenta que si bien es posible ejecutar aplicaciones GUI en un contenedor, requiere una cantidad significativa de tiempo y esfuerzo y, por lo tanto, no se recomienda. Si desea ejecutar aplicaciones GUI en un entorno limitado, consulte nuestro artículo sobre cómo crear aplicaciones en un entorno limitado en Linux.

VEA TAMBIÉN: Las 7 mejores alternativas de VirtualBox que puede usar

Ejecute varias distribuciones simultáneamente con contenedores de Linux

Así termina nuestro tutorial sobre cómo ejecutar varias distribuciones de Linux en una sola computadora, sin la sobrecarga de una máquina virtual de tamaño completo. La utilidad de esta tecnología solo está limitada por su creatividad, así que siéntase libre de experimentar y descubrir nuevos casos de uso. Si tiene problemas para configurar contenedores, no dude en hacernos una pregunta en la sección de comentarios.

Republica GEEK

Esta pagina es para ti, seremos tu apoyo en esta situación, quiero que sepas que no es un problema, es un hobby y como tu nosotros también lo ejercemos. Diseñada con la única intención de darte la información que no encuentras en otro lado, nos encargamos de montar la información que sabemos te importa. Así que, acompáñanos a llegar mas lejos...

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Botón volver arriba