Recherche…


Conteneurs de données uniquement

Les conteneurs de données uniquement sont obsolètes et sont désormais considérés comme un anti-modèle!

Auparavant, avant la sous-commande de volume de Docker et avant qu'il soit possible de créer des volumes nommés, Docker supprimait les volumes lorsqu'il n'y avait plus de références à ceux-ci dans aucun conteneur. Les conteneurs de données uniquement sont obsolètes car Docker offre désormais la possibilité de créer des volumes nommés, ainsi que beaucoup plus d'utilitaire via les différentes sous-commandes docker volume . Les conteneurs de données uniquement sont désormais considérés comme un anti-pattern pour cette raison.

De nombreuses ressources sur le Web datant des deux dernières années mentionnent l'utilisation d'un modèle appelé «conteneur de données uniquement», qui est simplement un conteneur Docker qui existe uniquement pour conserver une référence à un volume de données.

Rappelez-vous que dans ce contexte, un "volume de données" est un volume Docker qui n'est pas monté depuis l'hôte. Pour clarifier, un "volume de données" est un volume créé avec la directive VOLUME Dockerfile ou en utilisant le commutateur -v sur la ligne de commande dans une commande docker run , en particulier au format -v /path/on/container . Par conséquent, un "conteneur de données uniquement" est un conteneur dont le seul but est de --volumes-from un volume de données, qui est utilisé par l' --volumes-from dans une commande d' docker run . Par exemple:

docker run -d --name "mysql-data" -v "/var/lib/mysql" alpine /bin/true

Lorsque la commande ci-dessus est exécutée, un "conteneur de données uniquement" est créé. C'est simplement un conteneur vide auquel est attaché un volume de données. Il était alors possible d'utiliser ce volume dans un autre conteneur comme ceci:

docker run -d --name="mysql" --volumes-from="mysql-data" mysql

Le conteneur mysql contient maintenant le même volume qui se trouve également dans mysql-data .

Docker fournissant désormais la sous-commande volume et les volumes nommés, ce modèle est désormais obsolète et non recommandé.

Pour commencer avec la sous-commande volume et les volumes nommés, voir Création d'un volume nommé

Créer un volume de données

docker run -d --name "mysql-1" -v "/var/lib/mysql" mysql

Cette commande crée un nouveau conteneur à partir de l’image mysql . Il crée également un nouveau volume de données, qu'il monte ensuite dans le conteneur dans /var/lib/mysql . Ce volume aide les données à l'intérieur de celui-ci à persister au-delà de la durée de vie du conteneur. C'est-à-dire que lorsqu'un conteneur est supprimé, ses modifications du système de fichiers sont également supprimées. Si une base de données stockait des données dans le conteneur et que le conteneur était supprimé, toutes ces données sont également supprimées. Les volumes persisteront dans un emplacement particulier au-delà de la suppression de son conteneur.

Il est possible d'utiliser le même volume dans plusieurs conteneurs avec l' --volumes-from ligne --volumes-from commande --volumes-from :

docker run -d --name="mysql-2" --volumes-from="mysql-1" mysql

Le conteneur mysql-2 est désormais associé au volume de données de mysql-1 , utilisant également le chemin /var/lib/mysql .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow