GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Accéder à un serveur Web Apache dans un conteneur LXD

Qu'est-ce que LXD ?

LXD (prononcé « Lex-Dee ») est un gestionnaire de conteneurs système construit au-dessus de LXC (Linux Containers) qui est actuellement pris en charge par Canonical. L'objectif de LXD est de fournir une expérience similaire à une machine virtuelle mais via la conteneurisation plutôt que la virtualisation. Par rapport à Docker pour la livraison d'applications, LXD offre des fonctionnalités de système d'exploitation presque complètes avec des fonctionnalités supplémentaires telles que des instantanés, des migrations en direct, la gestion du stockage, etc.

Les principaux avantages de LXD sont la haute densité de conteneurs qu'il peut prendre en charge et les performances qu'il offre par rapport aux machines virtuelles. Un ordinateur avec 2 Go de RAM peut supporter adéquatement une demi-douzaine de conteneurs. De plus, LXD prend officiellement en charge les images de conteneurs des principales distributions Linux. Nous pouvons choisir la distribution et la version Linux à exécuter dans le conteneur.

Ce guide explique comment configurer un Linode pour qu'il fonctionne avec LXD, comment LXD fonctionne en pratique et comment résoudre les problèmes courants.

Remarque Pour simplifier, le terme conteneur est utilisé tout au long de ce guide pour décrire les conteneurs LXD.

Avant de commencer

  1. Si vous ne l'avez pas déjà fait, créez un compte Linode et une instance de calcul. Consultez nos guides Premiers pas avec Linode et Création d'une instance de calcul.

  2. Suivez notre guide Configuration et sécurisation d'une instance de calcul pour mettre à jour votre système. Vous pouvez également définir le fuseau horaire, configurer votre nom d'hôte, créer un compte utilisateur limité et renforcer l'accès SSH.

Monter le volume de stockage

Lors de la configuration de LXD, vous pouvez soit stocker les données du conteneur dans un volume externe (tel qu'un volume de stockage de bloc) ou dans un disque monté sur votre Linode.

Bloquer le volume de stockage

  1. Suivez le guide How to Use Block Storage with Your Linode et créez un volume de stockage en bloc d'une taille d'au moins 20 Go et attachez-le à votre Linode. Notez le nom de l'appareil et le chemin d'accès au volume.

    Attention Ne pas formatez le volume et ne l'ajoutez pas à /etc/fstab .

  2. Modifiez votre profil de configuration et sous Paramètres de démarrage sélectionnez GRUB 2 comme noyau. Voir Exécuter un noyau fourni par la distribution sur un Linode KVM pour plus d'informations.

  3. Redémarrez votre Linode à partir du gestionnaire Linode.

Disque

  1. Dans le Linode Manager, recherchez les disques section et cliquez sur Créer un nouveau disque .

    Remarque Si le disque de distribution de votre Linode a déjà 100% de l'espace disque disponible qui lui est alloué, vous devrez redimensionner le disque avant de pouvoir créer un disque de stockage. Voir Redimensionner un disque pour plus d'informations.
  2. Modifiez le profil de configuration de votre Linode. Sous Bloquer l'attribution d'appareils , attribuez votre nouveau disque à /dev/sdc . Notez ce chemin, dont vous aurez besoin lors de la configuration de LXD dans la section suivante.

  3. Sous Paramètres de démarrage sélectionnez GRUB 2 comme noyau.

  4. Redémarrez votre Linode à partir du gestionnaire Linode.

Initialiser LXD

  1. Installez les packages lxd et zfsutils-linux :

    sudo apt install lxd zfsutils-linux
    
  2. Ajoutez votre utilisateur Unix au lxd groupe :

    sudo usermod -a -G lxd username
    
  3. Démarrez une nouvelle session SSH pour que cette modification prenne effet :

  4. Exécutez lxd init pour initialiser LXD :

    sudo lxd init
    

    Vous serez invité plusieurs fois au cours du processus d'initialisation. Choisissez les valeurs par défaut pour toutes les options sauf Use existing block device? Pour cette option, sélectionnez oui puis entrez le chemin d'accès au volume de stockage ajouté dans la section précédente.

Commandes LXD

  1. Lister tous les conteneurs :

    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. Répertorier toutes les images de conteneurs 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) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    .....................................................................
    Remarque Les deux premières colonnes pour l'alias et l'empreinte digitale fournissent un identifiant qui peut être utilisé pour spécifier l'image du conteneur lors de son lancement.
  3. Lancer un nouveau conteneur avec le nom mycontainer :

    lxc launch ubuntu:16.04 mycontainer
    
    Creating mycontainer
    Starting mycontainer
  4. Vérifiez la liste des conteneurs pour vous assurer que le nouveau conteneur est en cours d'exécution :

    lxc list
    
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
    |    NAME     |  STATE  |         IPV4          |          IPV6             |    TYPE    | SNAPSHOTS |
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
    | mycontainer | RUNNING | 10.142.148.244 (eth0) | fde5:5d27:...:1371 (eth0) | PERSISTENT | 0         |
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
  5. Exécutez les commandes de base dans mycontainer :

    lxc exec mycontainer -- apt update
    lxc exec mycontainer -- apt upgrade
    
    Remarque Les caractères -- instruire le lxc commande pour ne plus analyser les paramètres de ligne de commande.
  6. Ouvrir une session shell dans 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]:~$
    Remarque

    Les images de conteneur Ubuntu ont par défaut un compte non root avec le nom d'utilisateur ubuntu . Ce compte peut utiliser sudo et ne nécessite pas de mot de passe pour effectuer des tâches administratives.

    Le sudo La commande fournit une connexion au compte existant ubuntu .

  7. Afficher les journaux du conteneur :

    lxc info mycontainer --show-log
    
  8. Arrêtez le conteneur :

    lxc stop mycontainer
    
  9. Retirez le conteneur :

    lxc delete mycontainer
    

Serveur Web Apache avec LXD

Cette section va créer un conteneur, installer le serveur Web Apache et ajouter les iptables appropriés règles afin d'exposer le poste 80.

  1. Lancer un nouveau conteneur :

    lxc launch ubuntu:16.04 web
    
  2. Mettez à jour la liste des packages dans le conteneur.

    lxc exec web -- apt update
    
  3. Installez Apache dans le conteneur LXD.

    lxc exec web -- apt install apache2
    
  4. Ajoutez les iptables règle pour exposer le port 80. Lorsque quelqu'un se connecte au port 80 via l'adresse IP publique, cette règle le redirige vers le port 80 du conteneur.

    Vous devrez remplacer your_public_ip et your_container_ip avec votre IP publique et votre IP de conteneur respectivement dans cette commande.

    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. Faire les iptables la règle persiste au redémarrage en installant iptables-persistent . Lorsque vous êtes invité à enregistrer les règles IPv4 et IPv6, cliquez sur Oui afin de les sauvegarder.

    sudo apt install iptables-persistent
    
  6. Depuis votre ordinateur local, accédez à l'adresse IP publique de votre Linode dans un navigateur Web. Vous devriez voir la page Apache par défaut :

Étapes suivantes

Si vous envisagez d'utiliser un seul site Web, alors un seul iptables règle au conteneur de site Web suffira. Si vous envisagez d'utiliser plusieurs sites Web, vous devrez installer un serveur Web tel que NGINX et configurer un proxy inverse dans un conteneur. Les iptables la règle redirigerait alors vers ce conteneur.

Plus d'informations

Vous pouvez consulter les ressources suivantes pour plus d'informations sur ce sujet. Bien que ceux-ci soient fournis dans l'espoir qu'ils seront utiles, veuillez noter que nous ne pouvons pas garantir l'exactitude ou l'actualité des documents hébergés en externe.

  • Présentation de LXD
  • Série d'articles de blog sur LXD 2.0
  • Communauté d'assistance LXD
  • Essayez LXD en ligne

Docker
  1. Réglage du serveur Web Apache Keepalive

  2. Installer le serveur Web Apache CentOS 6 / RHEL 6

  3. Installer le serveur Web Apache HTTPD sur Fedora 18

  4. Installer le serveur Web Apache sur openSUSE 12

  5. Installer le serveur Web Apache sur Ubuntu 12.10

Comment installer le serveur Web Apache sur CentOS 8

Comment héberger un site Web sur un serveur Web Apache

Meilleures pratiques pour sécuriser votre serveur Web Apache

Comment installer le serveur Web Apache sur Debian 11

Comment installer le serveur Web Apache sur Ubuntu 18.04

Comment optimiser le serveur Web Apache ?