Cómo arrancar varias distribuciones utilizando contenedores de 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 completas como VirtualBox, KVM o Xen. Una tecnología similar presente en el mundo BSD son las cárceles FreeBSD.

Como ejemplo, la máquina en la que estoy escribiendo es una computadora portátil que ejecuta Linux Mint 18, impulsada por un procesador Intel Atom y tiene 2 GB de RAM escasos. 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. Por lo tanto, si ha querido 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 que está familiarizado con la línea de comandos y la resolución de problemas generales.

Prerrequisitos

Aquí hay algunas cosas que debe configurar para comenzar a usar múltiples distribuciones:

1. Instale LXC y otro software de requisitos previos utilizando:

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

2. Ahora necesita configurar su perfil. Ingrese los siguientes comandos para configurarlo:

[sourcecode]mkdir -p ~ / .config / lxc
echo “lxc.id_map = u 0 100000 65536” & amp; amp; amp; amp; amp; amp; gt; ~ / .config / lxc / default.conf
echo “lxc.id_map = g 0 100000 65536” & amp; amp; amp; amp; amp; gt; & amp; amp; amp; amp; amp; amp; gt; ~ / .config / lxc / default.conf
echo “lxc.network.type = veth” & amp; amp; amp; amp; amp; amp; gt; & amp; amp; amp; amp; amp; amp; gt; ~ / .config / lxc / default.conf
echo “lxc.network.link = lxcbr0” & amp; amp; amp; amp; amp; amp; gt; & amp; amp; amp; amp; amp; amp; gt; ~ / .config / lxc / default.conf
echo “$ USER veth lxcbr0 2” | sudo tee -a / etc / lxc / lxc-usernet[/sourcecode]

3. Luego, debe configurar los permisos de usuario de la siguiente manera:

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

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 instalado LXC Container junto con otro software de requisitos previos, estos son los pasos para configurar el contenedor:

1. En este ejemplo, configuraremos un contenedor de Ubuntu, llamado ubu1 . Para hacerlo, ejecute 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. Puede utilizar el nombre que desee.

3. Ahora verá una lista de imágenes de distribución compatibles:

selección de distribución

4. Ingrese 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 interactiva, el siguiente comando logra el mismo resultado que el anterior:

[sourcecode]lxc-create -t ​​download -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 e instalación puede llevar un poco de tiempo dependiendo de su conexión a Internet y la velocidad de su PC. Después de la instalación, verá una pantalla como esta:

ubuntu_installed

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

Uso de varias distribuciones con contenedores de Linux

Arrancando el contenedor

Inicie su contenedor usando el comando lxc-start :

[sourcecode]lxc-start -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ó usando el comando lxc-ls :

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

contenedores en funcionamiento

El parámetro -f habilita lujoso informes. Aquí, puede ver que tengo dos contenedores: uno Debian (detenido) y otro 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á un shell de raíz en su contenedor. Se recomienda que configure una contraseña para el usuario root y cree una cuenta de usuario normal:

[sourcecode]passwd
adduser beebom[/sourcecode]

Por supuesto, reemplace beebom 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 Debian o Ubuntu:

[sourcecode]apt install wget openssh-server htop tmux nano iptables[/sourcecode]

Detener su contenedor

Una vez que haya terminado de jugar con el contenedor, use el comando exit para regresar al sistema host. Ahora use 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 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 para facilitar el aprovisionamiento. Puede hacer esto creando un clon, que 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-copy -n ubu1 -N ubu2[/sourcecode]

Aquí, la opción -n especifica el contenedor de origen y la opción -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 algunos cambios en un contenedor potencialmente peligrosos o difíciles de recuperar, como reconfigurar 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 trabajo anterior restaurando una instantánea.

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

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

Luego, cree una instantánea con 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á snap1, snap2etc.

Después de esto, puede iniciar el contenedor y realizar los cambios que desee. Si en algún momento desea volver a una instantánea que creó, detenga el 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 en el 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 al iniciar su sistema. Para hacer esto, vaya al archivo de configuración del contenedor, ubicado en $ HOME / .local / share / lxc / / config , y agregue las siguientes líneas:

[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 espere 5 segundos antes de iniciar el siguiente contenedor, si lo hubiera.

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]

Esto le mostrará los errores en la consola actual, lo cual 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 se le asignaron. Puede aumentar el número de puentes de red que un usuario puede ejecutar modificando el archivo / etc / lxc / lxc-usernet como root. Podría verse algo como esto:

[sourcecode]# NOMBRE DE USUARIO TIPO PUENTE RECUENTO
beebom veth lxcbr0 5[/sourcecode]

Puede cambiar el número 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 cajas de prueba ligeras, por ejemplo, para probar varias configuraciones de un servidor web o de base de datos antes de enviarlas 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 una caja de arena, consulte nuestro artículo sobre cómo crear aplicaciones de caja de arena 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 instructivo sobre la ejecución de múltiples 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 casos de uso novedosos. Si tiene problemas para configurar los contenedores, no dude en hacernos una pregunta en la sección de comentarios.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *