Résumé: Docker is a platform used to run applications in containers. It enables you to use specific software, such as Redis or MongoDB, or a specific version of software, which might not be supported by your operating system or might need compiling.

Docker is available as a Plesk extension. With it, you can run and manage containers based on specific Docker images, and to use Docker both on the local host and on remote servers.

In this topic, you will learn how to create, configure, and manage Docker containers in Plesk. You will also learn how to control remote Docker hosts from 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.

  • To use remote Docker services in Plesk, you need an additional license. It can be purchased either separately or as a part of the Hosting Pack, Power Pack, or 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

Before you can start using Docker, the Docker extension must be installed on the Plesk server:

Once the extension is installed, you are ready to begin. You will see the Docker option in the Navigation Pane.

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.

When using manual mapping, by default Docker only binds to the specified port on the host system’s localhost interface (127.0.0.1). This way, the port is inaccessible from the Internet, and the application inside the container is safe from attacks. To have Docker bind to the specified port on all network interfaces of the host system, clear the « a private port on the host » checkbox. If you do, the application inside the container becomes accessible from the Internet, and can be reached on the specified port via any of the host system’s IP addresses.

Avertissement: Docker presumes that authentication is carried out by the application itself, but sometimes it is not so (for example, MySQL/MariaDB does not allow anonymous access by default, but redis does). Making the application inside a container accessible from the Internet may result in the application being attacked by a malicious actor.

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

The link to Docker will appear in the Navigation Pane.

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.