Exportation Et Migration Docker

Cet article présente principalement les méthodes de migration et de sauvegarde de Docker, ainsi que les différences entre docker save et docker export.

1 docker save

docker save enregistre toutes les couches de l’image Docker dans un fichier tar, la commande est la suivante :

1
2
docker save IMAGE -o 114.tar
docker save IMAGE > 114.tar # L'utilisation de la redirection permet également d'enregistrer

La commande de lecture correspondante à docker save est docker load.

2 docker export

docker export enregistre l’état actuel du conteneur Docker (qu’il soit en cours d’exécution ou arrêté) dans un fichier tar, et enregistre une couche aplatie, la commande est la suivante :

1
2
docker export CONTAINER -o 114.tar
docker export CONTAINER > 114.tar # L'utilisation de la redirection permet également d'enregistrer

La commande correspondante à docker export est docker import.

3 Différences entre docker save et docker export

Le fichier tar généré par docker save contient toutes les couches, configurations et métadonnées de l’image, conservant toutes les informations de construction et l’historique des versions de l’image. Le fichier généré par docker export est un système de fichiers aplati, ne contenant que l’état actuel du conteneur, sans aucune information de construction ou de couches. En général, le résultat de export est plus petit, ce qui le rend adapté à la publication d’applications. Si des modifications et développements continus du contenu du conteneur sont nécessaires, il est préférable d’utiliser docker commit + docker save, ce qui permet de revenir en arrière comme avec git.

4 Test pratique

Effectuez d’abord quelques modifications dans un conteneur, écrivez un fichier texte dans le répertoire racine :

1
2
3
4
5
6
root@minedl:~# docker run -it ubuntu:latest
root@ba2179ff43aa:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@ba2179ff43aa:/# echo 1111 >> 1.txt
root@ba2179ff43aa:/# cat 1.txt
1111

Utilisez docker export pour exporter l’image du conteneur :

1
2
3
root@minedl:~# docker export ba2179ff43aa > me.tar
root@minedl:~# ls
me.tar  snap

Utilisez docker import pour importer l’image, vous pouvez voir que l’image nommée me a été importée :

1
2
3
4
5
6
root@minedl:~# docker import - me <  me.tar
sha256:8f5e159f2e21451ff2341526572bc3c67e9240454df0341a2ce447586b9e29a1
root@minedl:~# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
me            latest    8f5e159f2e21   4 seconds ago   77.8MB
mydoc         latest    40dd787fd6e9   9 minutes ago   77.8MB

Créez un conteneur à partir de l’image importée me, vérifiez si les modifications effectuées dans un autre conteneur ont été conservées :

1
2
3
4
5
root@minedl:~# docker run -it me /bin/bash
root@3f21d7037f50:/# ls
1.txt  bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@3f21d7037f50:/# cat 1.txt
1111

On constate que ce n’est plus le même conteneur qu’avant, mais les modifications ont été conservées.

Pour un conteneur unique, cette méthode permet une importation et une exportation rapides, mais si le groupe de conteneurs a été créé par docker compose, il est nécessaire d’utiliser load et save. En dehors des différents scénarios d’utilisation, la différence principale entre load et import est que export ne conserve pas l’historique des versions du conteneur, il peut être considéré comme un instantané à un moment donné. Pour plus de détails, vous pouvez consulter cet article.

En plus du transfert de conteneurs par fichiers, vous pouvez également utiliser docker hub et docker file.

Buy me a coffee~
Tim AlipayAlipay
Tim PayPalPayPal
Tim WeChat PayWeChat Pay
0%