Stockage et partage avec les volumes Docker

Stockage et partage avec les volumes Docker
Dans Docker, vous pouvez écrire des données sur la couche écrivative. Mais les données ne persistent pas après l'arrêt d'un conteneur. De plus, il n'est pas facile de déplacer les données d'un conteneur à un autre. Naturellement, le stockage et le partage des données sont parfois nécessaires entre les services.

Docker a trois types de supports de données qui peuvent aider - volumes, lier des supports et TMPF. Les volumes stockent les données du système de fichiers de l'hôte, mais il est géré par Docker. Les montures de liaison aident à stocker les données n'importe où sur le système hôte et les utilisateurs peuvent modifier directement les fichiers à partir des propres processus de l'hôte. Les supports TMPFS sont stockés uniquement dans la mémoire de l'hôte. Les volumes Docker sont la meilleure option car ils sont les plus sûrs à utiliser.

Comment utiliser les volumes Docker

Essayons un exemple pratique. Nous allons créer quelques conteneurs Ubuntu qui partagent le même volume.

Tout d'abord, nous voulons créer le volume avec la commande suivante:

$ Volume Docker Créer My-COMMON-VOL

Nous pouvons maintenant vérifier si le volume existe:

$ volume docker ls
Nom du volume du conducteur
My-Common-vol local

Nous pouvons en outre inspecter le volume pour vérifier ses propriétés:

$ volume docker inspecter mon-commun-vol
[

"Createdat": "2018-04-06T07: 43: 02Z",
"Driver": "local",
"Étiquettes": ,
"MountPoint": "/ var / lib / docker / volumes / my-common-vol / _data",
"Nom": "My-Common-vol",
"Options": ,
"Scope": "local"

]]

Il est important de se rappeler que Mountpoint est en fait à l'intérieur de la machine virtuelle sur laquelle Docker fonctionne. Donc, ce n'est pas directement accessible.

Commençons maintenant notre premier serveur avec My-Common-vol.

(Remarque pour la commande docker run, vous pouvez utiliser les options -mount et -v pour monter un volume. La syntaxe des deux est différente. Nous utiliserons la dernière option de montage car c'est la dernière.)

$ docker run --name server1 - mate source = my-common-vol, cible = / app -it ubuntu

Nous montons le dossier My-Common-vol to / App sur le conteneur Docker Server1. La commande ci-dessus doit vous connecter au serveur Ubuntu1. Dans la ligne de commande, accédez au dossier / App et créez un fichier:

root @ 1312ea074055: / # CD / App
root @ 1312ea074055: / app # ls
root @ 1312ea074055: / app # touchez Created-on-Server1.SMS
root @ 1312ea074055: / app # ls
créé sur server1.SMS

Nous avons donc le fichier créé sur server1.txt dans le dossier / app.

Allons créer un deuxième serveur et monter le même volume My-Common-vol:

$ docker run --name server2 - mate source = my-common-vol, cible = / src -it ubuntu

Maintenant, nous pouvons aller dans le dossier / src dans Server2, vérifier les fichiers Server1 et créer un nouveau fichier:

root @ 77cd51945461: / # cd / src
root @ 77cd51945461: / src # ls
créé sur server1.SMS
root @ 77cd51945461: / src # touch créé sur server2.SMS
root @ 77cd51945461: / src # ls -1
créé sur server1.SMS
créé sur server2.SMS

Dans le dossier / src, nous voyons que Created-on-Server1.txt existe déjà. Nous ajoutons créé sur server2.SMS. Nous pouvons vérifier sur Server1 et voir que Created-on-Server2.txt apparaît.

Commençons un nouveau Container Server3 qui n'aura un accès en lecture seule au volume My-Common-Vol:

$ docker run --name server3 - mate source = my-common-vol, cible = / test, readonly -it ubuntu

Nous avons donc créé Server3 avec My-Common-vol monté sur / test.

Essayons d'écrire quelque chose dans / test:

root @ a6620da1eea1: / # test CD
root @ a6620da1eea1: / test # ls -1
créé sur server1.SMS
créé sur server2.SMS
root @ a6620da1eea1: / test # touch créé sur server3.SMS
Touch: Impossible de toucher «créé sur server3.txt ': système de fichiers en lecture seule

Vous pouvez voir que nous ne pouvons pas écrire sur My-Common-vol depuis Server3.

Vous pouvez supprimer des volumes. Mais vous devez supprimer tous les conteneurs associés avant de pouvoir essayer. Sinon, vous obtiendrez une erreur comme ceci:

$ Docker Volume RM My-Common-vol
Réponse d'erreur de Daemon: Impossible de supprimer le volume: supprimer My-Common-Vol:
Le volume est utilisé - [1312ea07405528bc65736f56692c06f04280779fd283a81f59f8477f28ae35ba,
77CD51945461FA03F572EA6830A98A16ECE47B4F840C2EDFC2955C7C9A6D69D2,
A6620DA1EEA1A39D64F3ACDF82B6D70309EE2F8D1F2C6B5D9C98252D5792EA59]

Dans notre cas, nous pouvons retirer les conteneurs et le volume comme celui-ci:

$ docker conteneur RM Server1
$ docker conteneur rm server2
$ docker conteneur RM Server3
$ Docker Volume RM My-Common-vol

De plus, si vous souhaitez monter plusieurs volumes, l'option de la commande de la commande «Docker Run» le permet aussi.

Une étude plus approfondie:

  • https: // docs.docker.com / stockage /
  • https: // docs.docker.com / stockage / volumes /
  • https: // docs.docker.com / stockage / lis-montes /
  • https: // docs.docker.com / stockage / tmpfs /
  • https: // www.DigitalOcean.com / communautaire / tutoriels / comment-share-data-between-docker-containers