Apprentissage de Docker, Partie 6 : Travailler avec des donnĂ©es

Dans la partie d'aujourd'hui de la traduction d'une sĂ©rie de documents sur Docker, nous parlerons du travail avec les donnĂ©es. En particulier, sur les volumes Docker. Dans ces documents, nous avons constamment comparĂ© les mĂ©canismes de programmation Docker avec diverses analogies comestibles. Nous ne dĂ©rogerons pas ici Ă  cette tradition. Laissez les donnĂ©es dans Docker ĂȘtre des Ă©pices. Il existe de nombreuses Ă©pices dans le monde et Docker a de nombreuses façons de travailler avec les donnĂ©es.

→ Partie 1 : Les bases
→ Partie 2 : termes et concepts
→ Partie 3 : Dockerfiles
→ Partie 4 : RĂ©duire la taille des images et accĂ©lĂ©rer leur assemblage
→ Partie 5 : commandes
→ Partie 6 : travailler avec des donnĂ©es

Apprentissage de Docker, Partie 6 : Travailler avec des donnĂ©es

Veuillez noter que ce matĂ©riel a Ă©tĂ© prĂ©parĂ© Ă  l'aide de la version 18.09.1 ​​du moteur Docker et de la version API 1.39.

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

Stockage temporaire des données

Il existe deux façons de gérer les données temporaires dans les conteneurs Docker.

Par dĂ©faut, les fichiers créés par une application s'exĂ©cutant dans un conteneur sont stockĂ©s dans une couche de conteneur inscriptible. Pour que ce mĂ©canisme fonctionne, rien de spĂ©cial n'a besoin d'ĂȘtre configurĂ©. Il s'avĂšre bon marchĂ© et gai. L'application doit simplement enregistrer les donnĂ©es et continuer Ă  faire sa propre chose. Cependant, une fois que le conteneur aura cessĂ© d'exister, les donnĂ©es enregistrĂ©es de maniĂšre aussi simple disparaĂźtront Ă©galement.

Le stockage de fichiers temporaires dans Docker est une autre solution qui convient aux cas oĂč vous avez besoin d'un niveau de performance supĂ©rieur Ă  ce qui est rĂ©alisable en utilisant le mĂ©canisme standard de stockage de donnĂ©es temporaires. Si vous n'avez pas besoin que vos donnĂ©es soient stockĂ©es plus longtemps que le conteneur n'existe, vous pouvez vous connecter au conteneur tmpfs - une banque d'informations temporaire qui utilise la RAM de l'hĂŽte. Cela accĂ©lĂ©rera l'exĂ©cution des opĂ©rations d'Ă©criture et de lecture des donnĂ©es.

Il arrive souvent que les donnĂ©es doivent ĂȘtre stockĂ©es mĂȘme aprĂšs que le conteneur a cessĂ© d'exister. Pour ce faire, nous avons besoin de mĂ©canismes de stockage de donnĂ©es persistantes.

Stockage de données persistant

Il existe deux maniÚres de prolonger la durée de vie des données par rapport à la durée de vie du conteneur. Une façon consiste à utiliser la technologie de montage lié. Avec cette approche, vous pouvez monter, par exemple, un dossier réel sur le conteneur. Les processus en dehors de Docker pourront également travailler avec des données stockées dans un tel dossier. C'est comme ça regarde technologie de montage et de liaison tmpfs.

Apprentissage de Docker, Partie 6 : Travailler avec des donnĂ©es
Montage de tmpfs et bind mount

Les inconvénients de l'utilisation de la technologie de montage lié sont que son utilisation complique la sauvegarde des données, la migration des données, le partage des données entre plusieurs conteneurs. Il est bien préférable d'utiliser des volumes Docker pour le stockage de données persistantes.

Docker de volumes

Un volume est un systĂšme de fichiers situĂ© sur la machine hĂŽte en dehors des conteneurs. Les volumes sont créés et gĂ©rĂ©s par Docker. Voici les principales propriĂ©tĂ©s des volumes Docker :

  • Ils constituent un moyen de stockage permanent d'informations.
  • Ils sont indĂ©pendants et sĂ©parĂ©s des conteneurs.
  • Ils peuvent ĂȘtre partagĂ©s entre diffĂ©rents conteneurs.
  • Ils vous permettent d'organiser une lecture et une Ă©criture efficaces des donnĂ©es.
  • Les volumes peuvent ĂȘtre placĂ©s sur les ressources d'un fournisseur de cloud distant.
  • Ils peuvent ĂȘtre cryptĂ©s.
  • On peut leur donner des noms.
  • Le conteneur peut organiser le prĂ©-remplissage du volume avec des donnĂ©es.
  • Ils sont pratiques pour les tests.

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

Création de volumes

Les volumes peuvent ĂȘtre créés Ă  l'aide de requĂȘtes Docker ou API.

Voici une instruction dans le Dockerfile qui permet de créer un volume au démarrage d'un conteneur.

VOLUME /my_volume

Lors de l'utilisation d'une instruction similaire, Docker, aprÚs avoir créé le conteneur, créera un volume contenant les données qui existent déjà à l'emplacement spécifié. Notez que si vous créez un volume à l'aide d'un Dockerfile, cela ne vous dispense pas de spécifier le point de montage du volume.

Vous pouvez également créer des volumes dans un Dockerfile en utilisant le format JSON.

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

Travailler avec des volumes Ă  partir de la ligne de commande

▍CrĂ©ation de volumes

Vous pouvez crĂ©er un volume autonome avec la commande suivante :

docker volume create —-name my_volume

▍DĂ©couvrez les informations sur les volumes

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

docker volume ls

Vous pouvez explorer un volume spĂ©cifique comme celui-ci :

docker volume inspect my_volume

▍Supprimer un volume

Vous pouvez supprimer un volume comme ceci :

docker volume rm my_volume

Afin de supprimer tous les volumes qui ne sont pas utilisĂ©s par les conteneurs, vous pouvez recourir Ă  la commande suivante :

docker volume prune

Avant de supprimer des volumes, Docker vous demandera de confirmer cette opération.

Si un volume est associĂ© Ă  un conteneur, ce volume ne peut pas ĂȘtre supprimĂ© tant que le conteneur correspondant n'est pas supprimĂ©. En mĂȘme temps, 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

Il est conçu pour nettoyer les ressources Docker. AprÚs avoir exécuté cette commande, vous devriez pouvoir supprimer les volumes dont l'état était auparavant incorrect.

Les indicateurs --mount et --volume

Pour travailler avec des volumes, lorsque vous appelez la commande docker, vous aurez souvent besoin d'utiliser des drapeaux. Par exemple, pour crĂ©er un volume lors de la crĂ©ation du conteneur, vous pouvez utiliser cette construction :

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

Dans les temps anciens (jusqu'en 2017), le drapeau Ă©tait populaire --volume. Initialement, ce drapeau (il peut aussi ĂȘtre utilisĂ© sous une forme abrĂ©gĂ©e, puis il ressemble -v) a Ă©tĂ© utilisĂ© pour les conteneurs autonomes, et le drapeau --mount - dans un environnement Docker Swarm. Cependant, depuis Docker 17.06, le drapeau --mount peut ĂȘtre utilisĂ© dans n'importe quel scĂ©nario.

Il convient de noter que lors de l'utilisation du drapeau --mount la quantitĂ© de donnĂ©es supplĂ©mentaires qui doivent ĂȘtre spĂ©cifiĂ©es dans la commande augmente, mais, pour plusieurs raisons, il est prĂ©fĂ©rable d'utiliser ce drapeau particulier, et non --volume. Drapeau --mount est le seul mĂ©canisme qui vous permet de travailler avec des services ou de spĂ©cifier des options de pilote de volume. En outre, ce drapeau est plus facile Ă  utiliser.

Dans les exemples existants de commandes de manipulation de donnĂ©es Docker, vous pouvez voir de nombreux exemples d'utilisation de l'indicateur -v. Lorsque vous essayez d'adapter ces commandes pour vous-mĂȘme, gardez Ă  l'esprit que les drapeaux --mount Đž --volume utiliser diffĂ©rents formats de paramĂštres. Autrement dit, vous ne pouvez pas simplement remplacer -v sur --mount et obtenir une Ă©quipe de travail.

La principale différence entre --mount О --volume est-ce que lors de l'utilisation du drapeau --volume tous les paramÚtres sont rassemblés dans un champ, et lors de l'utilisation --mount les paramÚtres sont séparés.

Lorsque vous travaillez avec --mount les paramÚtres sont représentés sous forme de paires clé-valeur, à savoir, il ressemble key=value. Ces paires sont séparées par des virgules. Voici les options couramment utilisées --mount:

  • type — type de montage. La valeur de la clĂ© correspondante peut ĂȘtre lier, le volume ou tmpfs. On parle ici de volumes, c'est-Ă -dire qu'on s'intĂ©resse Ă  la valeur volume.
  • source - source de montage. Pour les volumes nommĂ©s, il s'agit du nom du volume. Pour les volumes sans nom, cette clĂ© n'est pas spĂ©cifiĂ©e. Il peut ĂȘtre raccourci Ă  src.
  • destination - le chemin vers lequel le fichier ou le dossier est montĂ© dans le conteneur. Cette clĂ© peut ĂȘtre raccourcie en dst ou target.
  • readonly - monte le volume prĂ©vu uniquement pour la lecture. L'utilisation de cette clĂ© est facultative et aucune valeur ne lui est affectĂ©e.

Voici un exemple d'utilisation --mount avec de nombreuses options :

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

Les résultats de

Voici quelques commandes utiles que vous pouvez utiliser lorsque vous travaillez avec des volumes Docker :

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

Voici une liste des options couramment utilisées pour --mount, applicable dans une commande de la forme 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 Docker, il est temps de dire quelques mots sur la prochaine étape pour les apprenants de Docker. Ici super bon article sur Docker. Ici un livre sur Docker (lorsque vous achetez ce livre, essayez d'en obtenir l'édition la plus récente). Ici un autre livre pour ceux qui pensent que la pratique est la meilleure façon d'apprendre la technologie.

Chers lecteurs, Quels documents sur Docker recommanderiez-vous aux dĂ©butants d'apprendre ?

Apprentissage de Docker, Partie 6 : Travailler avec des donnĂ©es

Source: habr.com

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