Manuel Docker Compact (2: Montage et persistance des données)

En premier

Cet article "Manuel Docker Compact" se compose de 4 éléments. D'autres articles sont ici.

Numéro de poste Sous-titre et destination d'accès
1 Commandes élémentaires / basiques
2 Montage et persistance des données(* Cet article)
3 docker-compose
4 Créer une image personnalisée

Objectif de cet article

Ceci est une continuation de l'article précédent. Cette fois, le montage, volume, qui ne peut être évité lors de l'utilisation du conteneur Je vais résumer la persistance des données.

important ** Cette fois est importante. Je me suis regretté sans connaître la monture et la persistance. : sanglot: Essayez de créer un environnement de conteneur confortable en le montant et en le perpétuant fermement. **: sourire:

Persistance des données de conteneur

** Les données du conteneur seront perdues si vous détruisez le conteneur. ** ** Ce n'est pas grave si vous le jetez pour une opération de test, mais vous voulez éviter d'effacer les données à utiliser dans Database. Les données qui ne doivent pas être perdues à l'intérieur du conteneur doivent être configurées pour sortir du conteneur et le conteneur regarde vers l'extérieur.

Système d'exécution = dans le conteneur
Données acquises / données de mise à jour = en dehors du conteneur

Je pense que l'image de est bonne.

Utilisez le support pour retirer ce conteneur.

Type de monture

Il existe deux types de montures. Pas lequel est le meilleur Je pense qu'il est nécessaire de les utiliser correctement en fonction du contenu à traiter.

Type de monture Destination de montage Utilisation recommandée
le volume Zone réservée sur Docker Engine Données que vous ne souhaitez pas voir à partir du conteneur Docker
Données de base de données, etc.
lier Répertoire de l'hôte Docker Lorsque vous souhaitez afficher le fichier hôte Docker dans le conteneur
Fichier de configuration transmettant des données
Données pour lesquelles les modifications sont immédiatement répercutées

スクリーンショット 2020-10-26 11.14.10.png

スクリーンショット 2020-10-26 11.15.19.png

Commande de création de volume

Les volumes peuvent être créés, répertoriés et supprimés avec la commande docker volume. Si vous utilisez inspect, vous pouvez trouver la destination d'enregistrement par point de montage du volume.

Sous-commande Contenu Exemple d'utilisation
create Création de volume docker volume create --name 'Nom du volume'
inspect Vérifiez les détails du volume docker volume inspect 'Nom du volume'
ls Liste des volumes docker volume ls
prune Supprimer tous les volumes non montés docker volume prune
rm Supprimer le volume docker volume rm 'Nom du volume'

À propos des paramètres de montage

Paramètres de montage (utilisation en combinaison avec docker run, etc.) Défini avec l'indicateur -v ou --mount. Jusqu'à présent, -v est souvent utilisé, et il existe de nombreuses descriptions dans les livres et documents de référence,

Je pense qu'il vaut mieux utiliser --mount.

Comme raison

1. Si le volume n'existe pas, il sera créé sans autorisation.

Ce qui suit est un extrait du site officiel, Dans le cas de -v, si vous faites une faute de frappe, un nouveau volume sera créé. J'obtiens une erreur indiquant que les données précédentes ne sont pas visibles. Si cette erreur se produit et que vous poursuivez le développement, vous aurez du mal à y faire face lorsque vous le remarquerez plus tard. D'un autre côté, --mount renverra une erreur si elle n'existe pas, vous pouvez donc être rassuré.

Source: docs docker Si vous liez le montage d'un fichier ou d'un répertoire en utilisant> -v ou --volume et que le fichier ou le répertoire n'existe pas déjà sur l'hôte Docker, -v générera ce point de terminaison de montage. Dans ce cas, il est toujours généré sous forme de répertoire.

Si vous montez en liaison un fichier ou un répertoire à l'aide de> --mount et que le fichier ou le répertoire n'existe pas sur l'hôte Docker, Docker ne générera pas automatiquement le fichier ou le répertoire. Une erreur est imprimée à la place.

2. Il est difficile de dire s'il s'agit d'un montage de liaison ou d'un montage de volume

Réglage avec -v

-v / home / ubuntu / ***: / usr / local / *** montage de liaison -v mysqlvolume: / var / lib / mysql montage du volume La différence ci-dessus est difficile à comprendre avec ou sans le premier /

--mount

--mount type = bind, src = / home / ubuntu / ***. Dst = / usr / local / *** Bind mount --mount type = volume, src = mysqlvolume, dst = / var / lib / mysql Montage du volume

Pour --mount, utilisez type pour le montage bind ou volume, Spécifiez où monter les données avec src = sorce (source de montage) et dst = destination (destination de montage) Il semble que l'opération ici réduira les erreurs.

Sauvegarde de données

La sauvegarde est facile avec un support de liaison, (Comme il existe sur l'hôte, il peut être géré en copiant les données telles quelles.) S'il s'agit d'un montage de volume, la sauvegarde nécessite du travail.

Tout d'abord, l'exemple de commande de sauvegarde est décrit ci-dessous.

docker run --rm --mount type=volume,src=*****,dst=/src --mount type=bind,src="$PWD",dst=/dest busybox tar czf /dest/backup.tar.gz -C /src .

Regardons le contenu dans l'ordre.

  1. Jeter après avoir exécuté avec docker run --rm
  2. Spécifiez pour exécuter le montage du volume dans / src de busybox avec --mount type = volume, src = *****, dst = / src
  3. Spécifiez le montage de liaison dans / dest de busybox avec --mount type = bind, src =" $ PWD ", dst = / dest
    Spécifiez le répertoire actuel de l'hôte Docker avec" $ PWD ".
  4. Exécution de Linux léger sur busybox
  5. Copiez la création de fichier au format gz de / src vers / dest avec tar (commande de gestion des fichiers d'archive) + gzf
  6. Puisqu'il est monté en liaison par PWD, il est écrit dans le répertoire courant.

Ceci termine la sauvegarde du volume.

Ce qui précède est une méthode de sauvegarde Cette méthode nécessite que vous connaissiez le ** nom du volume de destination de sauvegarde **. Lors de la gestion de nombreux conteneurs, il est difficile de savoir quel conteneur utilise quel volume.

Dans ce cas

Utilisez volumes-from.

--volumes-from correspond au démarrage du conteneur Il hérite de différentes informations de montage de conteneur et se monte avec les mêmes paramètres. Étant donné que la cible de sauvegarde peut être spécifiée par le nom du répertoire du conteneur au lieu du nom du volume Vous n'avez pas besoin de savoir sur quel volume le répertoire du conteneur est monté. C'est très pratique pour la sauvegarde des données.

Exemple de code

docker run --rm --volumes-from {{Nom du conteneur}} -v "$PWD":/dest busybox tar czf /dest/backup.tar.gz -C {{Adresse cible}} .
  1. Spécification de «volumes-from»
  2. Démarrez busybox et sauvegardez le conteneur Les 2 étapes ci-dessus sont faciles.

De plus, lors de l'utilisation d'un volume, il semble préférable de configurer un ** conteneur de volume de données **. Le conteneur de volume de données ne fonctionne pas principalement comme une activité de conteneur, Il ne monte que les répertoires requis. Bien que ce conteneur de volume de données ne fonctionne pas principalement

1. Vous pouvez utiliser les paramètres de montage sans connaître la destination de montage du volume.
2. Étant donné que les informations de montage du volume peuvent être gérées dans le conteneur de volume de données, la cible de sauvegarde est clarifiée.

Il a l'avantage d'être utilisé.

Restauration de sauvegarde

La restauration est l'opposé de la sauvegarde de volume.

Commencez par créer un volume.

docker volume create *****

Entrez ensuite la commande dans le sens inverse de la sauvegarde des données.

docker run --rm --mount type=volume,src=*****,dst=/dest --mount type=bind,src="$PWD",dst=/src busybox tar xzf /src/backup.tar.gz -C /dest
  1. Montez le volume de destination de la restauration sur / dest
  2. Liez le montage du répertoire courant à / src
  3. Extraire avec tar xzf
  4. Montez le volume restauré et les données seront à nouveau disponibles.
    (Message de commande omis)

Cet article se termine ici. Merci pour la lecture.

Recommended Posts

Manuel Docker Compact (2: Montage et persistance des données)
Manuel compact de Docker (3: docker-compose)
Manuel Docker Compact (1: Commandes de base / de base)
Manuel Docker Compact (4: Créer une image personnalisée)
Installation et initialisation de Docker