Cómo ejecutar varias distribuciones simultáneamente usando contenedores Linux

  • Damian Washington
  • 0
  • 4087
  • 939

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 punto 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 de FreeBSD.

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

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 supone una familiaridad 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. Instalar LXC y otro software de requisito previo que utiliza:

[código fuente] sudo apt install lxc lxc-templates uidmap [/ código fuente]

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

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

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

[código fuente] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subgids 100000-165536 $ USUARIO

sudo cgm crear todos los usuarios
sudo cgm chown all user $ (id -u) $ (id -g)
cgm movepid todos los usuarios $$ [/ código fuente]

Configurando 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, nombrada ubu1. Para hacerlo, ejecute el siguiente comando:

[código fuente] lxc-create -template download -name ubu1 [/ código fuente]

2. Aquí, el -modelo el parámetro le dice a lxc que descargar una imagen preconfigurada de internet, mientras que la -nombre El parámetro 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 compatibles:

4 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í:

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

[código fuente] lxc-create -t ​​download -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ código fuente]

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

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

Uso de múltiples distribuciones con contenedores de Linux

Poner en marcha el contenedor

Comience su contenedor usando el lxc-start mando:

[código fuente] lxc-start -n ubu1 -d [/ código fuente]

Aquí el -norte parámetro especifica el nombre del contenedor que deseas comenzar (ubu1 en este caso), y el -re parámetro hace que se ejecute en segundo plano.

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

[código fuente] lxc-ls -f [/ código fuente]

los -F parámetro habilita lujoso informes Aquí puedes ver que tengo dos contenedores - un Debian (detenido) y un Ubuntu (en ejecución).

Acceso y uso de su contenedor

Usted puede acceder a la consola del contenedor utilizando la lxc-attach mando:

[código fuente] lxc-attach -n ubu1 [/ código fuente]

Ahora tendrás un cáscara de raíz en tu contenedor Se recomienda que configure una contraseña para el usuario root, y crear una cuenta de usuario normal:

[código fuente] passwd
adduser beebom [/ código fuente]

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

[código fuente] apt install wget openssh-server htop tmux nano iptables [/ código fuente]

Deteniendo su contenedor

Una vez que hayas terminado de jugar con el contenedor, usa el salida mando para volver al sistema host. Ahora usa el lxc-stop mando para detener tu contenedor:

[código fuente] lxc-stop -n ubu1 [/ código fuente]

Esto hará que el contenedor se cierre 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 múltiples copias de la misma 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 de ubu1 contenedor (vamos a llamarlo ubu2), primero pare el contenedor utilizando lxc-stop, luego usa el copia-lxc mando:

[código fuente] lxc-stop -n ubu1

lxc-copy -n ubu1 -N ubu2 [/ código fuente]

Aquí el -La opción n especifica el contenedor de origen, y el -La opción N especifica el nombre del clon. A verificar que el contenedor fue clonado, use el lxc-ls mando:

Instantáneas

Suponga que está a punto de realizar algunos cambios potencialmente peligrosos o difíciles de recuperar de los cambios en un contenedor, como la reconfiguración de 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 restaurando una instantánea.

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

[código fuente] lxc-stop -n ubu1 [/ código fuente]

Luego, crear una instantánea utilizando la instantánea-lxc mando:

[código fuente] lxc-snapshot -n ubu1 [/ código fuente]

Esto crea una instantánea llamada snap0. Las instantáneas posteriores que cree con este comando se llamarán snap1, snap2, etc..

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

[código fuente] lxc-snapshot -r snap0 -n ubu1 [/ código fuente]

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

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 hacer esto, vaya al archivo de configuración del contenedor, situado en $ HOME / .local / share / lxc // config, y agregue las siguientes líneas:

[código fuente] lxc.start.auto = 1
lxc.start.delay = 5 [/ código fuente]

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 comenzar el siguiente contenedor, si lo hay.

Solución de problemas

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

[código fuente] lxc-start -n ubu1 -F [/ código fuente]

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 múltiples contenedores simultáneamente

Si intenta ejecutar varios contenedores a la vez, puede ver 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. Usted puede aumentar la cantidad de puentes de red que puede ejecutar un usuario modificando el / etc / lxc / lxc-usernet presentar como raíz. Puede verse más o menos así:

[código fuente] # USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5 [/ código fuente]

Usted 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 contenedores 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 dicha aplicación 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, se necesita una cantidad considerable de tiempo y esfuerzo, por lo que no se recomienda. Si desea ejecutar aplicaciones GUI en un sandbox, consulte nuestro artículo sobre cómo sandbox apps en Linux.

VEA TAMBIÉN: 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 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 nuevos casos de uso. Si tiene problemas para configurar contenedores, no dude en hacernos una pregunta en la sección de comentarios.




Nadie ha comentado sobre este artículo todavía.

Guías de compra de gadgets, tecnologías importantes
Publicamos guías detalladas para la compra de equipos, creamos listas interesantes de los mejores productos en el mercado, cubrimos noticias del mundo de la tecnología