Cómo

Cómo ejecutar varias distribuciones simultáneamente con contenedores de Linux

Cómo ejecutar varias distribuciones simultáneamente con 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 de 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 unos escasos 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 ha querido ejecutar múltiples distribuciones en su sistema Linux, los Contenedores de Linux deberían hacer el trabajo por usted muy bien..

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 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 requisitos previos que utilice:

[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" &amperio; amperio; amperio; amperio; gt; ~ / .config / lxc / default.conf
echo "lxc.id_map = g 0 100000 65536" &amperio; amperio; amperio; amperio; gt;&amperio; amperio; amperio; amperio; gt; ~ / .config / lxc / default.conf
echo "lxc.network.type = veth" &amperio; amperio; amperio; amperio; gt;&amperio; amperio; amperio; amperio; gt; ~ / .config / lxc / default.conf
echo "lxc.network.link = lxcbr0" &amperio; amperio; amperio; amperio; gt;&amperio; amperio; amperio; amperio; 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 $ 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 LXC Container instalado 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:

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

2. Aquí, el -plantilla el parámetro le dice a lxc que descargar una imagen preconfigurada de Internet, mientras que la -nombre 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. 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 [/ sourcecode]

6. LXC ahora descargará e instalará una imagen mínima de Ubuntu xenial en su sistema host. La descarga e instalación pueden 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:

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 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 comenzarubu1 en este caso), y el -D 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]

La -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-adjuntar mando:

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

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

[código fuente] contraseña
adduser beebom [/ código fuente]

Por supuesto, reemplace beebom con el nombre de usuario que desee. A continuación, puede instalar el 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]

Detener su contenedor

Una vez que haya terminado de jugar con el contenedor, utilice el Salida mando para volver al sistema anfitrión. 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 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 del mismo 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 ubu1 contenedor (llamémoslo ubu2), primero detenga 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 -n opció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 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 detener el contenedor:

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

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

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

Esto crea una instantánea llamada snap0. Cualquier instantánea posterior que cree con este comando se llamará 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 lxc-instantánea 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 hacia 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 a la archivo de configuración del contenedor, situado en $ INICIO / .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 con el siguiente contenedor, si lo hubiera.

Solución de problemas

Si tiene problemas para iniciar 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 varios contenedores simultáneamente

Si intenta ejecutar varios contenedores a la vez, es posible que veas 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 un usuario puede ejecutar modificando el / etc / lxc / lxc-usernet archivar como raíz. Podría verse algo como esto:

[código fuente] # NOMBRE DE USUARIO TIPO PUENTE 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 los contenedores de Linux

Los contenedores de Linux tienen varios usos. Puede usarlos como cajas de prueba livianas, 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 usar 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 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 no dude en experimentar y descubrir casos de uso novedosos. Si tiene problemas para configurar contenedores, no dude en hacernos una pregunta en la sección de comentarios.

A medida que la demanda de cabras aumentó en Bakra Eid, la gente comenzó a vender en OLX
Bakra Eid (Eid-ul-Azha) marca el aumento de la demanda de cabras y, por lo tanto, el aumento de precio, pero eso es normal. Lo que es sorprendente es ...
Vídeos más vistos en YouTube en 2011
YouTube, el tercer sitio web más visitado del mundo, sirvió más de 1.000.000.000.000 (un billón) de reproducciones este año, como se menciona en la pu...
Las redes sociales son la vida real
Mi primer editorial recibió reacciones generalmente positivas la semana pasada y, como cualquier ser humano sensible, quería continuar con una secuela...