Résumé: Docker est une plate-forme utilisée pour exécuter des applications dans les 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. Avec cette extension, vous pouvez exécuter et gérer des conteneurs basés sur des images Docker spécifiques et utiliser Docker non seulement sur l’hôte local, mais aussi sur les serveurs distants.

Dans cette section, vous découvrirez comment créer, configurer et gérer des conteneurs Docker dans Plesk. Vous découvrirez également comment contrôler les hôtes Docker distants depuis Plesk.

Exigences et limites

Avertissement: L’extension Docker télécharge les images depuis Docker Hub telles quelles et ne les préconfigure en aucune façon. Certains conteneurs Docker ou certains logiciels dans ces conteneurs sont destinés à fonctionner uniquement dans des environnements sécurisés et peuvent requérir des configurations supplémentaires en termes de sécurité. Avant de lancer ces images téléchargées dans Plesk, vous devez renforcer vous-même leur sécurité. Pour obtenir des informations spécifiques, consultez la documentation du conteneur ou du fournisseur du logiciel. Par exemple, consultez la section sur la sécurité dans la documentation Redis.

  • Docker est pris en charge dans Plesk pour les systèmes d’exploitation suivants : CentOS 7, Red Hat Enterprise Linux 7, Debian 10, Debian 11, Ubuntu 18.04, Ubuntu 20.04, Ubuntu 22.04, AlmaLinux 8.x, Rocky Linux 8.x et Virtuozzo 7 avec Update 1 Hotfix 1 (7.0.1-686) ou les versions ultérieures.

    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 déployé dans un conteneur Docker.

  • Pour utiliser les services Docker à distance dans Plesk, vous avez besoin d’une licence supplémentaire. Vous pouvez soit l’acheter séparément soit via le Hosting Pack <https://store.plesk.com/1404/purl-ext-offer-hosting-pack>`__, le Power Pack ou le Developer Pack.

  • 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.

Prérequis

Avant de pouvoir commencer à utiliser Docker, l’extension Docker doit être installée sur le serveur Plesk :

Une fois que l’extension est installée, vous pourrez commencer. Vous verrez l’option Docker dans le volet de navigation.

image docker menu

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 docker catalog

Pour utiliser des filtres :

  1. Cliquez sur la flèche image down arrow 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 docker container running

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 container settings

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.

Lors de l’utilisation du mappage manuel, Docker est associé par défaut uniquement au port spécifié sur l’interface localhost du système hôte (127.0.0.1). De cette façon, le port est inaccessible depuis Internet et l’application dans le conteneur est à l’abri des attaques. Pour que Docker soit associé au port spécifié sur toutes les interfaces réseau du système hôte, décochez la case « un port privé sur l’hôte ». Si vous le faites, l’application dans le conteneur devient accessible depuis Internet et peut être atteinte sur le port spécifié via n’importe quelle adresse IP du système hôte.

Avertissement: Docker suppose que l’authentification est effectuée par l’application elle-même, mais parfois ce n’est pas le cas (par exemple, MySQL/MariaDB n’autorise pas l’accès anonyme par défaut, contrairement à Redis). Rendre l’application située dans un conteneur accessible depuis Internet peut entraîner l’attaque de l’application par un acteur malveillant.

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.

Pour en savoir plus sur les données dans les conteneurs, consultez la documentation Docker.

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 suivantes 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.

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 remote docker hosts

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 docker local images

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 remove outdated images

  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 red cross 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 Docker > 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.