GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Acceda a un servidor web Apache dentro de un contenedor LXD

¿Qué es LXD?

LXD (pronunciado "Lex-Dee") es un administrador de contenedores del sistema construido sobre LXC (Linux Containers) que actualmente es compatible con Canonical. El objetivo de LXD es proporcionar una experiencia similar a una máquina virtual pero a través de contenedores en lugar de virtualización. En comparación con Docker para la entrega de aplicaciones, LXD ofrece una funcionalidad de sistema operativo casi completa con características adicionales como instantáneas, migraciones en vivo, administración de almacenamiento y más.

Los principales beneficios de LXD son la alta densidad de contenedores que puede admitir y el rendimiento que ofrece en comparación con las máquinas virtuales. Una computadora con 2GB de RAM puede soportar adecuadamente media docena de contenedores. Además, LXD admite oficialmente las imágenes de contenedor de las principales distribuciones de Linux. Podemos elegir la distribución y versión de Linux para ejecutar en el contenedor.

Esta guía cubre cómo configurar un Linode para que funcione con LXD, cómo funciona LXD en la práctica y cómo solucionar problemas comunes.

Nota Para simplificar, el término contenedor se usa a lo largo de esta guía para describir los contenedores LXD.

Antes de comenzar

  1. Si aún no lo ha hecho, cree una cuenta de Linode y una instancia de cómputo. Consulte nuestras guías Introducción a Linode y Creación de una instancia informática.

  2. Siga nuestra guía de configuración y protección de una instancia informática para actualizar su sistema. También puede establecer la zona horaria, configurar su nombre de host, crear una cuenta de usuario limitada y fortalecer el acceso SSH.

Montar volumen de almacenamiento

Al configurar LXD, puede almacenar los datos del contenedor en un volumen externo (como un volumen de almacenamiento en bloque) o en un disco montado en su Linode.

Bloquear volumen de almacenamiento

  1. Siga la guía Cómo usar el almacenamiento en bloque con su Linode y cree un volumen de almacenamiento en bloque con un tamaño de al menos 20 GB y adjúntelo a su Linode. Tome nota del nombre del dispositivo y la ruta al volumen.

    Precaución No formatee el volumen y no lo agregue a /etc/fstab .

  2. Edite su perfil de configuración y en Configuración de arranque seleccione GRUB 2 como su núcleo. Consulte Ejecutar un kernel suministrado por distribución en un KVM Linode para obtener más información.

  3. Reinicie su Linode desde Linode Manager.

Disco

  1. En Linode Manager, busque los Discos y haga clic en Crear un nuevo disco .

    Nota Si el disco de distribución de Linode ya tiene asignado el 100 % del espacio disponible en el disco, deberá cambiar el tamaño del disco antes de poder crear un disco de almacenamiento. Consulte Cambiar el tamaño de un disco para obtener más información.
  2. Edite el perfil de configuración de Linode. En Bloquear asignación de dispositivos , asigne su nuevo disco a /dev/sdc . Tome nota de esta ruta, que necesitará cuando configure LXD en la siguiente sección.

  3. En Configuración de arranque seleccione GRUB 2 como su núcleo.

  4. Reinicie su Linode desde Linode Manager.

Inicializar LXD

  1. Instale los paquetes lxd y zfsutils-linux :

    sudo apt install lxd zfsutils-linux
    
  2. Agregue su usuario de Unix al lxd grupo:

    sudo usermod -a -G lxd username
    
  3. Inicie una nueva sesión SSH para que este cambio surta efecto:

  4. Ejecute lxd init para inicializar LXD:

    sudo lxd init
    

    Se le pedirá varias veces durante el proceso de inicialización. Elija los valores predeterminados para todas las opciones excepto Use existing block device? Para esta opción, seleccione y luego ingrese la ruta al volumen de almacenamiento agregado en la sección anterior.

Comandos LXD

  1. Listar todos los contenedores:

    lxc list
    
    Generating a client certificate. This may take a minute...
    If this is your first time using LXD, you should also run: sudo lxd init
    To start your first container, try: lxc launch ubuntu:16.04
    
    +------+-------+------+------+------+-----------+
    | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
    +------+-------+------+------+------+-----------+
  2. Enumere todas las imágenes de contenedores disponibles:

    lxc image list images:
    
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    |              ALIAS              | FINGERPRINT  | PUBLIC |               DESCRIPTION                |  ARCH   |   SIZE   |          UPLOAD DATE          |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.4 (3 more)             | 39a3bf44c9d8 | yes    | Alpine 3.4 amd64 (20180126_17:50)        | x86_64  | 2.04MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.4/armhf (1 more)       | 9fe7c201924c | yes    | Alpine 3.4 armhf (20170111_20:27)        | armv7l  | 1.58MB   | Jan 11, 2017 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.4/i386 (1 more)        | d39f2f2ba547 | yes    | Alpine 3.4 i386 (20180126_17:50)         | i686    | 1.88MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.5 (3 more)             | 5533a5247551 | yes    | Alpine 3.5 amd64 (20180126_17:50)        | x86_64  | 1.70MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.5/i386 (1 more)        | 5e93d5f4cae1 | yes    | Alpine 3.5 i386 (20180126_17:50)         | i686    | 1.73MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.6 (3 more)             | 5010616d9a24 | yes    | Alpine 3.6 amd64 (20180126_17:50)        | x86_64  | 1.73MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    .....................................................................
    Nota Las dos primeras columnas para el alias y la huella dactilar proporcionan un identificador que se puede usar para especificar la imagen del contenedor al iniciarlo.
  3. Inicie un nuevo contenedor con el nombre mycontainer :

    lxc launch ubuntu:16.04 mycontainer
    
    Creating mycontainer
    Starting mycontainer
  4. Verifique la lista de contenedores para asegurarse de que el nuevo contenedor se esté ejecutando:

    lxc list
    
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
    |    NAME     |  STATE  |         IPV4          |          IPV6             |    TYPE    | SNAPSHOTS |
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
    | mycontainer | RUNNING | 10.142.148.244 (eth0) | fde5:5d27:...:1371 (eth0) | PERSISTENT | 0         |
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
  5. Ejecutar comandos básicos en mycontainer :

    lxc exec mycontainer -- apt update
    lxc exec mycontainer -- apt upgrade
    
    Nota Los caracteres -- instruir al lxc comando para no analizar más parámetros de la línea de comandos.
  6. Abra una sesión de shell dentro de mycontainer :

    lxc exec mycontainer -- sudo --login --user ubuntu
    
    To run a command as administrator (user "root"), use "sudo <command>".
    See "man sudo_root" for details.
    
    [email protected]:~$
    Nota

    Las imágenes del contenedor de Ubuntu tienen por defecto una cuenta no root con el nombre de usuario ubuntu . Esta cuenta puede usar sudo y no requiere una contraseña para realizar tareas administrativas.

    El sudo El comando proporciona un inicio de sesión en la cuenta existente ubuntu .

  7. Ver los registros del contenedor:

    lxc info mycontainer --show-log
    
  8. Detener el contenedor:

    lxc stop mycontainer
    
  9. Retire el contenedor:

    lxc delete mycontainer
    

Servidor web Apache con LXD

Esta sección creará un contenedor, instalará el servidor web Apache y agregará las iptables apropiadas. reglas para exponer el post 80.

  1. Lanzar un nuevo contenedor:

    lxc launch ubuntu:16.04 web
    
  2. Actualice la lista de paquetes en el contenedor.

    lxc exec web -- apt update
    
  3. Instale Apache en el contenedor LXD.

    lxc exec web -- apt install apache2
    
  4. Agrega las iptables regla para exponer el puerto 80. Cuando alguien se conecta al puerto 80 a través de la dirección IP pública, esta regla lo redirige al puerto 80 del contenedor.

    Deberá reemplazar your_public_ip y your_container_ip con su IP pública y la IP del contenedor respectivamente en este comando.

    PORT=80 PUBLIC_IP=your_public_ip CONTAINER_IP=your_container_ip sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "forward to the Apache2 container"'
    
  5. Haz las iptables la regla persiste al reiniciar instalando iptables-persistent . Cuando se le solicite guardar las reglas de IPv4 e IPv6, haga clic en . para salvarlos.

    sudo apt install iptables-persistent
    
  6. Desde su computadora local, navegue hasta la dirección IP pública de Linode en un navegador web. Debería ver la página predeterminada de Apache:

Pasos siguientes

Si planea usar un solo sitio web, entonces un solo iptables la regla al contenedor del sitio web será suficiente. Si planea usar varios sitios web, deberá instalar un servidor web como NGINX y configurar un proxy inverso en un contenedor. Las iptables entonces la regla redirigiría a este contenedor.

Más información

Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.

  • Introducción a LXD
  • Serie de entradas de blog sobre LXD 2.0
  • Comunidad de apoyo de LXD
  • Pruebe LXD en línea

Docker
  1. Cómo configurar un servidor web Apache

  2. Ajuste del Keepalive del servidor web Apache

  3. Instale el servidor web Apache CentOS 6 / RHEL 6

  4. Instale el servidor web Apache HTTPD en Fedora 18

  5. Instale el servidor web Apache en openSUSE 12

Cómo instalar el servidor web Apache en CentOS 8

Cómo alojar un sitio web en un servidor web Apache

Proteja su servidor web Apache Mejores prácticas

Cómo instalar el servidor web Apache en Debian 11

Cómo instalar el servidor web Apache en Ubuntu 18.04

¿Cómo optimizar el servidor web Apache?