Regarder le tutoriel vidéo

Docker est une plate-forme pour les applications distribuées destinée aux développeurs et administrateurs système. Elle permet d’exécuter des applications dans des conteneurs. Elle vous permet d’utiliser des logiciels spécifiques, tels que Redis ou MongoDB, ou une version spécifique d’un logiciel, pouvant ne pas être pris en charge par votre système d’exploitation ou nécessitant une compilation.

Docker est disponible en tant qu’extension Plesk. Plesk vous permet d’exécuter et de gérer des conteneurs basés sur des images Docker spécifiques et d’utiliser Docker non seulement sur l’hôte local, mais aussi sur une machine distante spécifique.

Exigences et limites

  • Docker is supported in Plesk for the following operating systems: CentOS 7, RedHat 7, Debian 8, Debian 9, Ubuntu 14.04, Ubuntu 16.04, and Ubuntu 18.04.

    Dans Plesk pour Windows, vous pouvez utiliser Docker installé sur une machine distante (voir Utilisation de Docker à distance plus bas dans cette section).

  • Vous ne pouvez pas utiliser Docker dans Plesk exécuté sur Windows Server 2008.

  • Vous ne pouvez pas utiliser Docker dans Plesk déployé dans un conteneur Docker.

  • Pour utiliser les services Docker à distance dans Plesk, vous avec besoin d’une licence complémentaire. Vous pouvez l’acquérir individuellement ou via le pack d’hébergement.

  • Docker ne fonctionne que sur des systèmes x64.

  • Il est impossible de migrer ou sauvegarder des conteneurs Docker dans Plesk. Toutefois, vous pouvez sauvegarder les données utilisées par les conteneurs (voir Mappage de volume ci-après) ou télécharger des snapshots.

  • Virtuozzo 7 avec Mise à jour 1 Correctif 1 (7.0.1-686) ou version ultérieure est installé et pris en charge. Remarque : à partir de cette mise à jour, les nouveaux conteneurs sous CentOS 7 sont créés avec pare-feu activé par défaut, Virtuozzo étant en valeur d’une sécurité accrue. L’administrateur Plesk doit configurer manuellement le pare-feu pour que les ports nécessaires au bon fonctionnement de Plesk soient ouverts.

Premiers pas avec Docker

Installez l’extension Docker dans Plesk.

Pour commencer à l’utiliser, allez dans Docker dans le panneau de navigation gauche.

Catalogue d’images

Dans le catalogue (Docker > Catalogue d’images Docker), Plesk propose des images de https://hub.docker.com/explore. Par défaut, seules les images recommandées sont présentées. Pour voir plus d’images, utilisez la zone de recherche ou les filtres.

Plusieurs versions sont disponibles pour chaque application. Vous pouvez exécuter une version précise en sélectionnant l’étiquette correspondante comme ci-dessous :

image 76044

Pour utiliser des filtres :

  1. Cliquez sur la flèche image 76322 en regard de la zone de recherche.

  2. Indiquez au moins l’un de ces éléments : répertoire et nom de l’image.

    Répertoires que vous pouvez sélectionner :

    • Répertoire local, contenant des images locales. Ces images sont déjà téléchargées et sont stockées sur le serveur avec Docker. Pour plus d’informations, consultez la rubrique Gestion d’images locales plus bas dans cette section.
    • Hub Docker - https://hub.docker.com/explore.

Pour exécuter un conteneur :

  1. Allez sous Docker > Catalogue d’images Docker.

  2. Utilisez la zone de recherche ou les filtres pour rechercher rapidement des applications dans le catalogue.

  3. Pour voir la description et la documentation d’une application sur le hub Docker, cliquez sur le nom de l’image. Cela ne vaut pas pour les images locales.

  4. Pour exécuter une version spécifique, cliquez sur la flèche en regard du bouton Exécuter et sélectionnez la version de l’application.

  5. Pour exécuter la dernière version de l’application sélectionnée, cliquez sur Exécuter.

    Si l’image est stockée en local, il s’agit du bouton Exécuter (local).

    Plesk crée un conteneur, vous invite à en définir les paramètres (variables d’environnement, etc.), puis l’exécute. Vous pouvez annuler l’exécution en cliquant sur Annuler sur l’écran Paramètres. Pour plus d’informations sur les paramètres, consultez la rubrique Paramètres des conteneurs plus bas sur cette page.

  6. Le conteneur est visible dans la liste des conteneurs en haut de la page Catalogue Docker.

    image 76046

Consultez le log (Logs) pour connaître les paramètres indispensables au bon fonctionnement du conteneur.

Paramètres des conteneurs

Note: pour modifier les paramètres d’un conteneur, il n’est pas nécessaire de l’arrêter. Lorsque vous enregistrez les nouveaux paramètres, Plesk recrée le conteneur.

Pour modifier les paramètres d’un conteneur, allez dans Paramètres ou Détails > Paramètres.

image 78131

Limitation de la mémoire

Par défaut, l’utilisation de la RAM dans un conteneur Docker est illimitée. Pour limiter l’utilisation de la RAM, décochez la case Illimité et saisissez la valeur limite en mégaoctets dans le champ Limite de mémoire.

Note: pour le moment, il est impossible de limiter l’utilisation du CPU et du disque pour un conteneur Docker.

Note: les conteneurs Docker sont des objets de niveau administrateur. Ils ne sont pas contrôlés par les limites Cgroup au niveau de l’abonnement (utilisation du CPU, de la RAM et du disque).

Démarrage automatique

Si l’option Démarrage automatique après redémarrage du système n’est pas sélectionnée, après redémarrage système, les sites Web utilisant ce conteneur risquent d’être hors service et le conteneur doit être redémarré manuellement.

Mappage de port

Par défaut, le mappage de port automatique est activé et le port interne du conteneur est mappé à un port aléatoire du système hôte, par exemple 32768.

Pour modifier le port sur le système hôte, décochez l’option Mappage de port automatique et indiquez un autre port externe dans le mappage manuel. Si le mappage manuel n’apparaît pas lorsque vous décochez la case, cela signifie que le conteneur n’expose pas les ports.

Avertissement: si le mappage de port est configuré, Docker fait la liaison avec le port indiqué sur toutes les interfaces réseau du système hôte. Généralement, cela signifie que l’application est accessible depuis tout emplacement. Docker suppose que l’authentification est gérée par l’application, mais cela n’est pas toujours le cas, par exemple MySQL ne permet pas l’accès anonyme contrairement à Redis.

Plesk ne peut déterminer quels sont les services installés sur un certain conteneur Docker et ne peut en contrôler l’accès. Pour interdire l’accès à l’application hors Plesk, procédez manuellement via le pare-feu du système hôte.

Mappage de volume

Les volumes Docker sont des répertoires sur votre serveur, avec montage sur un conteneur Docker, vous offrant un stockage permanent accessible depuis votre système hôte. Les données des volumes Docker peuvent être sauvegardées et surtout ne sont pas supprimées si vous arrêtez ou supprimez un conteneur.

For more information about data in containers, refer to the Docker documentation.

Pour ajouter un mappage de volume, définissez les éléments suivants :

  • Dans le champ Destination à gauche : indiquez le chemin d’accès absolu vers un répertoire dans le conteneur.
  • Dans le champ Source à droite : indiquez le chemin d’accès absolu vers un répertoire sur le serveur que vous voulez monter dans le conteneur.

Pour mapper plusieurs répertoires, cliquez sur Ajouter un mappage.

Configuration de variables d’environnement

Les variables d’environnement sont utilisées par l’application dans un conteneur. Vous devrez peut-être ajouter ou modifier des variables. Plesk permet d’ajouter autant de variables que nécessaire.

Opérations sur les conteneurs

Vous pouvez effectuer les actions suivantes avec des conteneurs :

  • Redémarrer ou Arrêter un conteneur. Dans ce cas, le conteneur est recréé avec les paramètres actuels.

    Note: si vous n’avez pas enregistré les données sur les volumes montés (voir Mappage de volume plus bas), elles seront perdues.

  • Consulter les logs et la consommation de ressources (Détails).

  • Modifier les paramètres des conteneurs, tels que les variables d’environnement ou le mappage de volume (Paramètres ou Détails > Paramètres).

    Dans Plesk sous CentOS, vous pouvez définir la limite de mémoire d’un conteneur (Paramètres > Limite de la mémoire).

  • Renommer un conteneur (Paramètres > Nom du conteneur).

  • Recréer un conteneur avec la même image ou une autre version (Détails > Recréer).

  • Créer une image reposant sur un conteneur avec vos paramètres personnalisés (Détails > Enregistrer sous Image).

  • Faire un snapshot d’un conteneur (Détails > Télécharger un snapshot).

  • Supprimer un conteneur (Supprimer ou Détails > Supprimer).

Recréation d’un conteneur

En général, vous devez recréer un conteneur pour mettre à jour l’application. En réalité, vous pouvez reconstruire un conteneur depuis toute version de l’application disponible dans l’application, et non seulement depuis une version récente.

Les paramètres personnalisés sont conservés pendant la recréation. Pour conserver les données utilisées par l’application dans le conteneur, vous devez définir le mappage de volume avant de recréer un conteneur. Le mappage de volume vous permet d’accéder aux répertoires dans un conteneur (voir le Mappage de volume dans les paramètres de conteneur).

Pour recréer un conteneur :

  1. Allez dans Docker et cliquez sur Détails sous le conteneur à recréer.
  2. Cliquez sur Recréer dans les paramètres du conteneur et indiquez la version de l’image et s’il faut utiliser les variables d’environnement par défaut.

Utilisation de Docker à distance

Par défaut, Plesk utilise Docker installé en tant que composants de Plesk. Toutefois, vous pouvez utiliser des services Docker installés hors de Plesk. Notez bien que vous ne pouvez utiliser qu’un service à la fois. Le nom d’hôte du serveur sélectionné est indiqué dans le titre du catalogue Docker dans Plesk.

Note: gérer des services Docker distants requiert un add-on de clé de licence de Plesk. Sans cet add-on, vous ne pouvez gérer que le service Docker local exécuté sur le serveur Plesk.

Configuration de services distants

Configurez le serveur distant exécutant Docker comme décrit dans la documentation Docker pour l’utiliser comme serveur distant dans Plesk.

Gérer des services distants

Les étapes suivant sont valables pour Plesk pour Linux et Windows.

Pour commencer à utiliser Docker exécuté sur un hôte distant :

  1. Allez sous Outils & Paramètres > Docker (sous Gestion des serveurs).
  2. Cliquez sur Ajouter un serveur et indiquez les paramètres du serveur distant avec Docker.
  3. Pour commencer à utiliser ce service Docker dans Plesk, gardez l’option Définir sur activé.

Le lien vers Docker apparaît dans le volet de navigation gauche.

Pour changer de service Docker :

  1. Allez sous Outils & Paramètres > Docker (sous Gestion des serveurs).
  2. Dans la liste des serveurs, sélectionnez celui que vous allez utiliser et cliquez sur Définir sur activé.

Autre solution : réglez le serveur sur Activé lorsque vous modifiez ses paramètres.

image 76284

Création d’images avec des paramètres personnalisés

Pour créer une image selon les modifications apportées à un conteneur, utilisez la commande Enregistrer sous Image. Cela crée un snapshot de votre conteneur qui apparaît en tant que nouvelle image dans le catalogue d’images. Ainsi vous pouvez créer des images avec des paramètres personnalisés, des variables d’environnement par exemple.

Pour créer une image depuis l’un de vos conteneurs :

Allez sous Docker > Détails sous le nom du conteneur > Enregistrer sous Image et éventuellement indiquez les éléments suivants :

  • Nom de l’image. Par défaut, un ID est généré et utilisé comme nom.
  • Balise. Vous pouvez indiquer ici la version de l’image. La version par défaut est la « plus récente ».

L’image créée apparaît dans le catalogue d’images avec l’intitulé Image locale.

Gestion des images locales

Les images locales sont celles stockées par Docker sur le disque local. Il est donc inutile de les télécharger depuis le catalogue d’images.

Une image devient locale dans les situations suivantes :

  • Vous avez sélectionné une version (balise) d’une image dont le téléchargement a commencé. Si vous exécutez ensuite un conteneur ou annulez l’exécution (écran Paramètres), l’image est enregistrée en local.
  • Vous chargez une image dans le catalogue Docker dans Plesk (Charger l’image dans le catalogue d’images Docker).
  • Vous avez créé une image personnalisée depuis un conteneur (voir Création d’images avec des paramètres personnalisés).
  • Vous avez généré une image avec l’interface de ligne de commande.

Si Docker héberge au moins une version téléchargée d’un groupe de versions d’une image, cette image est marquée comme Image locale dans le catalogue. Exécuter (local) indique que la dernière version a déjà été téléchargée. Plesk indique aussi combien il existe d’images locales pour un produit.

image 76318

Pour voir les images locales et supprimer les images locales obsolètes :

  1. Allez sous Docker > Catalogue d’images Docker.

  2. Pour voir toutes les images locales, cliquez sur la flèche en regard de la zone de recherche. et sélectionnez Local dans le filtre Répertoire.

  3. Pour voir toutes les images locales d’un produit précis, cliquez sur le lien sous le nom du produit. Toutes les balises des images locales et l’espace disque occupé sont indiqués.

    image 76321

  4. Pour supprimer toutes les images, cliquez sur Supprimer toutes les images.

  5. Pour supprimer une image précise, cliquez sur l’icône Supprimer image 76316 en regard de l’image voulue.

Configuration de Nginx pour les requêtes proxy de domaines sur un conteneur

Certains conteneurs Docker exposent les ports, de sorte que les applications dans les conteneurs sont accessibles via ces ports.

Lorsque vous utilisez une application dans un conteneur Docker sur votre site Web, il peut être pratique d’indiquer le port non standard dans son URL. Pour éviter des désagréments, vous pouvez configurer Nginx pour les requêtes proxy de domaines sur ce port, pour que les domaines puissent utiliser un port standard (80 par exemple) sans devoir indiquer explicitement le port dans l’URL.

Exigences

  • Nginx doit être exécuté dans Plesk.
  • Vous devez mapper manuellement le port dans un conteneur sur un port du système hôte (par exemple 32768) (Docker > sélectionnez un conteneur > Paramètres > décochez l’option Mappage de port automatique).

Après mappage manuel du port dans un conteneur à un port de votre système (par exemple 32768), vous pouvez configurer Nginx pour les requêtes proxy de domaines sur ce port, pour que les domaines puissent utiliser un port standard sur Nginx (80 par exemple). Pour cela, ajoutez une règle pour Nginx dans les paramètres du domaine comme suit :

Allez sous Sites Web & Domaines > domaine > Règles de proxy > Ajouter une règle et définissez les éléments suivants :

  • URL. Indiquez l’URL du site Web utilisant une application s’exécutant dans un conteneur. Il peut s’agir du site Web principal ou d’une partie de ce site.
  • Conteneur. Sélectionnez l’application s’exécutant en tant que conteneur Docker.
  • Port. Sélectionnez l’un des mappages indiqués dans les paramètres du conteneur (port dans un conteneur mappé à un port de votre système). Nginx transmet alors par proxy des requêtes au port sur le système.

Les règles de proxy sont mises en œuvre dans la configuration du serveur Web, par ex. dans le fichier du site Web  nginx.conf (dans /var/www/vhosts/system/$domain/conf/):

#extension docker begin
location ~ ^/.* {
    proxy_pass http://0.0.0.0:9080;
    proxy_set_header Host             $host;
    proxy_set_header X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
}
#extension docker end

Les règles de proxy devraient fonctionner correctement sur les serveurs derrière NAT.

Note: les conteneurs Docker connectés via des règles de proxy à un site Web ne sont pas comptabilisés dans l’utilisation de l’espace disque de l’abonnement. Ferait exception à cette règle un répertoire de site Web monté sur un conteneur Docker en tant que volume, car dans ce cas, tous les fichiers situés dans le conteneur sont comptabilisés dans l’utilisation de l’espace disque par le site Web.