Étude de Docker, partie 6 : gestion des donnĂ©es

Dans cette partie de notre série de traductions sur Docker, nous allons parler de la gestion des données, en particulier des volumes Docker. Dans ces articles, nous avons constamment comparé les mécanismes de Docker avec différentes analogies alimentaires. Ne dérogeons pas à cette tradition ici. Les données dans Docker seront nos épices. Il existe de nombreux types d'épices dans le monde, tout comme il existe de nombreuses façons de travailler avec des données dans Docker.

→ Partie 1 : les bases
→ Partie 2 : termes et concepts
→ Partie 3 : fichiers Dockerfile
→ Partie 4 : rĂ©duction de la taille des images et accĂ©lĂ©ration de leur construction
→ Partie 5 : commandes
→ Partie 6 : gestion des donnĂ©es

Étude de Docker, partie 6 : gestion des donnĂ©es

Notez que ce matériel a été préparé en utilisant l'engin Docker version 18.09.1 et l'API version 1.39.

Les donnĂ©es dans Docker peuvent ĂȘtre stockĂ©es temporairement ou de maniĂšre permanente. Commençons par les donnĂ©es temporaires.

Stockage temporaire des données

Dans les conteneurs Docker, il existe deux maniÚres d'organiser le travail avec les données temporaires.

Par défaut, les fichiers créés par une application fonctionnant dans un conteneur sont sauvegardés dans la couche du conteneur qui prend en charge l'écriture. Il n'est pas nécessaire de configurer quoi que ce soit de spécial pour que ce mécanisme fonctionne. Cela s'avÚre bon marché et efficace. L'application doit simplement enregistrer les données et continuer ses tùches. Cependant, lorsque le conteneur cesse d'exister, les données sauvegardées de cette maniÚre disparaßtront également.

Pour stocker des fichiers temporaires dans Docker, une autre solution peut ĂȘtre utilisĂ©e, adaptĂ©e pour les cas oĂč un niveau de performance plus Ă©levĂ© est requis par rapport Ă  celui obtenu avec le mĂ©canisme standard de stockage temporaire. Si vous n'avez pas besoin que vos donnĂ©es soient conservĂ©es plus longtemps que la durĂ©e de vie du conteneur, vous pouvez connecter un tmpfs au conteneur — un stockage temporaire qui utilise la mĂ©moire vive de l'hĂŽte. Cela permettra d'accĂ©lĂ©rer les opĂ©rations d'Ă©criture et de lecture des donnĂ©es.

Il arrive souvent que les donnĂ©es doivent ĂȘtre conservĂ©es mĂȘme aprĂšs la disparition du conteneur. Pour cela, nous aurons besoin de mĂ©canismes de stockage des donnĂ©es permanents.

Stockage permanent des données

Il existe deux façons de prolonger la durée de vie des données au-delà de celle du conteneur. L'une consiste à utiliser la technologie de bind mount. Avec cette approche, il est possible de monter, par exemple, un dossier existant. Les processus situés en dehors de Docker pourront aussi interagir avec les données stockées dans ce dossier. Voici comment cela se présente le montage tmpfs et la technologie bind mount.

Étude de Docker, partie 6 : gestion des donnĂ©es
Montage tmpfs et bind mount

Les inconvénients de l'utilisation de la technologie bind mount résident dans le fait que son utilisation complique la sauvegarde des données, la migration des données et le partage des données entre plusieurs conteneurs. Il est beaucoup mieux d'utiliser des volumes Docker pour le stockage permanent des données.

Volumes Docker

Un volume est un systÚme de fichiers qui se trouve sur l'hÎte, en dehors des conteneurs. Docker est responsable de la création et de la gestion des volumes. Voici les principales caractéristiques des volumes Docker :

  • Ils sont des moyens de stockage permanent de l'information.
  • Ils sont indĂ©pendants et sĂ©parĂ©s des conteneurs.
  • Ils peuvent ĂȘtre utilisĂ©s en commun par diffĂ©rents conteneurs.
  • Ils permettent d'organiser une lecture et un Ă©criture efficaces des donnĂ©es.
  • Les volumes peuvent ĂȘtre placĂ©s sur les ressources d'un fournisseur de cloud distant.
  • Ils peuvent ĂȘtre chiffrĂ©s.
  • Ils peuvent ĂȘtre nommĂ©s.
  • Un conteneur peut prĂ©remplir le volume avec des donnĂ©es.
  • Ils sont pratiques pour les tests.

Comme vous pouvez le voir, les volumes Docker ont d'excellentes propriétés. Parlons de la façon de les créer.

Création de volumes

Les volumes peuvent ĂȘtre créés avec Docker ou via des requĂȘtes API.

Voici une instruction dans Dockerfile qui permet de créer un volume lors du démarrage du conteneur.

VOLUME /my_volume

En utilisant cette instruction Docker, aprÚs la création du conteneur, un volume sera créé contenant les données déjà présentes à l'endroit spécifié. Notez que si vous créez un volume avec Dockerfile, cela ne vous dispense pas d'indiquer le point de montage du volume.

Il est possible de créer des volumes dans Dockerfile en utilisant également le format JSON.

De plus, les volumes peuvent ĂȘtre créés Ă  partir de la ligne de commande pendant que le conteneur est en cours d'exĂ©cution.

Travailler avec des volumes depuis la ligne de commande

▍CrĂ©ation d'un volume

Vous pouvez créer un volume indépendant avec la commande suivante :

docker volume create --name my_volume

▍VĂ©rification des informations sur les volumes

Pour afficher la liste des volumes Docker, utilisez la commande suivante :

docker volume ls

Pour explorer un volume spécifique, vous pouvez procéder comme suit :

docker volume inspect my_volume

▍Suppression d'un volume

Vous pouvez supprimer un volume comme ceci :

docker volume rm my_volume

Pour supprimer tous les volumes qui ne sont pas utilisés par des conteneurs, vous pouvez utiliser la commande suivante :

docker volume prune

Avant de supprimer des volumes Docker, une confirmation vous sera demandée pour effectuer cette opération.

Si un volume est liĂ© Ă  un conteneur, ce volume ne peut pas ĂȘtre supprimĂ© tant que le conteneur correspondant n'a pas Ă©tĂ© supprimĂ©. De plus, mĂȘme si le conteneur est supprimĂ©, Docker ne le comprend pas toujours. Si cela se produit, vous pouvez utiliser la commande suivante :

docker system prune

Cette commande est destinée à nettoyer les ressources Docker. AprÚs l'exécution de cette commande, vous devriez pouvoir supprimer les volumes dont le statut a été mal identifié auparavant.

Les drapeaux —mount et —volume

Pour travailler avec des volumes, lorsque vous invoquez la commande docker, vous devrez souvent utiliser des drapeaux. Par exemple, pour créer un volume lors de la création d'un conteneur, vous pouvez utiliser cette construction :

docker container run --mount source=my_volume, target=\/container\/path\/for\/volume my_image

Autrefois (avant 2017), le drapeau --volumeĂ©tait populaire. À l'origine, ce drapeau (il peut Ă©galement ĂȘtre utilisĂ© sous une forme abrĂ©gĂ©e, alors il apparaĂźt comme -v) Ă©tait utilisĂ© pour des conteneurs autonomes, tandis que le drapeau --mount Ă©tait utilisĂ© dans un environnement Docker Swarm. Cependant, Ă  partir de Docker 17.06, le drapeau --mount peut ĂȘtre utilisĂ© dans tous les scĂ©narios.

Il convient de noter que l'utilisation du drapeau --mount augmente le volume des données supplémentaires à indiquer dans la commande, mais pour plusieurs raisons, il vaut mieux utiliser ce drapeau plutÎt que --volume. L'option --mount -- c'est le seul mécanisme qui permet de travailler avec des services ou de spécifier les paramÚtres du pilote de volume. De plus, travailler avec ce drapeau est plus simple.

Dans les exemples de commandes existants, visant à travailler avec des données dans Docker, vous pouvez rencontrer de nombreux exemples d'utilisation du drapeau -v. En essayant d'adapter ces commandes, gardez à l'esprit que les drapeaux --mount et --volume utilisent différents formats de paramÚtres. Autrement dit, il n'est pas juste possible de remplacer -v sur --mount et d'obtenir une commande fonctionnelle.

La principale différence entre --mount et --volume est que lors de l'utilisation du drapeau --volume tous les paramÚtres sont regroupés ensemble, dans un seul champ, alors qu'en utilisant --mount Les paramÚtres sont séparés.

Lors de l'utilisation de --mount Les paramÚtres sont présentés sous forme de paires clé-valeur, à savoir, cela ressemble à clé=valeur. Ces paires sont séparées par des virgules. Voici des paramÚtres fréquemment utilisés --mount:

  • type — type de montage. La valeur pour la clĂ© correspondante peut ĂȘtre bind, volume ou tmpfs. Ici, nous parlons des volumes, c'est-Ă -dire que nous nous intĂ©ressons Ă  la valeur volume.
  • source — source de montage. Pour les volumes nommĂ©s, il s'agit du nom du volume. Pour les volumes non nommĂ©s, cette clĂ© n'est pas spĂ©cifiĂ©e. Elle peut ĂȘtre abrĂ©gĂ©e en src.
  • destination — chemin oĂč le fichier ou le dossier est montĂ© dans le conteneur. Cette clĂ© peut ĂȘtre abrĂ©gĂ©e en dst ou cible.
  • readonly — monte le volume qui est destinĂ© en lecture seule. L'utilisation de cette clĂ© est facultative, aucune valeur n'est assignĂ©e.

Voici un exemple d'utilisation --mount avec de nombreux paramĂštres :

docker run --mount type=volume,source=volume_name,destination=\/path\/in\/container,readonly my_image

Résultats

Voici des commandes utiles que vous pouvez utiliser lors du travail avec des volumes Docker :

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Voici une liste de paramÚtres fréquemment utilisés pour --mount, applicables dans une commande de type docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=\/path\/in\/container
  • readonly

Maintenant que nous avons terminĂ© cette sĂ©rie de matĂ©riaux sur Docker, il est temps de dire quelques mots sur oĂč aller ensuite pour ceux qui apprennent Docker. Voici un grand article sur Docker. Voici un livre sur Docker (en achetant ce livre, essayez d'obtenir la derniĂšre Ă©dition disponible). Voici un autre livre qui conviendra Ă  ceux qui estiment que la pratique est le meilleur moyen d'apprendre les technologies.

Chers lecteurs ! Quels matériaux sur Docker recommanderiez-vous aux débutants ?

Étude de Docker, partie 6 : gestion des donnĂ©es

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster