La commande Docker cp est un utilitaire pratique qui permet de copier des fichiers et des dossiers entre un conteneur et le système hôte.
Si vous souhaitez copier des fichiers de votre système hôte vers le conteneur, vous devez utiliser la commande docker cp comme ceci :
docker cp host_source_path container:destination_path
Si vous souhaitez copier des fichiers du conteneur vers le système hôte, utilisez cette commande :
docker cp container:source_path host_destination_path
Cela peut sembler un peu intimidant, alors laissez-moi vous l'expliquer par quelques exemples pratiques.
Exemples de commandes Docker cp

Dans mon tutoriel, j'ai installé Docker sur Ubuntu. Mais les étapes sont les mêmes pour toutes les distributions exécutant docker.
J'espère que vous savez comment exécuter un conteneur Docker, car vous aurez besoin d'un conteneur en cours d'exécution.
Répertoriez d'abord vos conteneurs en cours d'exécution à l'aide de docker ps commande :
[email protected]:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8353c6f43fba 775349758637 "bash" 8 seconds ago Up 7 seconds ubu_container
Vous devez connaître soit l'ID du conteneur, soit le nom du conteneur. Dans mon cas, le nom du conteneur docker est ubu_container . et l'ID du conteneur est 8353c6f43fba .
Si vous souhaitez vérifier que les fichiers ont été copiés avec succès, vous pouvez entrer votre conteneur de la manière suivante, puis utiliser les commandes Linux habituelles :
docker exec -it ubu_container bash
1. Copiez les fichiers du système hôte vers le conteneur docker
La copie avec docker cp est similaire à la commande de copie sous Linux.
Je vais copier un fichier nommé a.py dans le répertoire home/dir1 du conteneur.
docker cp a.py ubu_container:/home/dir1
Si le fichier est copié avec succès, vous ne verrez aucune sortie à l'écran. Si le chemin de destination n'existe pas, vous verrez une erreur :
[email protected]:~$ sudo docker cp a.txt ubu_container:/home/dir2/subsub
Error: No such container:path: ubu_container:/home/dir2
Si le fichier de destination existe déjà, il sera écrasé sans aucun avertissement.
Vous pouvez également utiliser l'ID du conteneur au lieu du nom du conteneur :
docker cp a.py 8353c6f43fba:/home/dir1
Docker Run vs Start vs Create :Différence expliquée Cet article explique la différence avec des exemples. 

2. Copier les fichiers du conteneur Docker vers le système hôte
La commande docker cp est exécutée uniquement sur le système hôte. Vous ne pouvez pas l'exécuter dans le conteneur.
Même si vous souhaitez copier des fichiers du conteneur Docker vers le système hôte, vous devez être dans le système hôte et utiliser la commande de la manière suivante :
sudo docker cp ubu_container:/home/dir1/new.txt /home/abhishek
3. Copier les répertoires entre le conteneur et le système hôte
Si vous souhaitez copier un répertoire sous Linux à l'aide de la commande cp, vous devrez utiliser l'option récursive -r.
Mais dans la commande docker cp, vous n'avez pas besoin de telles options. La même commande fonctionne pour copier les fichiers et les dossiers.
docker cp /home/abhishek/my_dir ubu_container:/home
sudo docker cp ubu_container:/home/my_dir /home/abhishek
4. Copiez les fichiers et les répertoires avec les attributs d'origine
Vous pouvez utiliser le mode archive lors de la copie avec l'option -a. Avec cela, vous pouvez copier toutes les autorisations de fichier, UID et GID du fichier d'origine.
docker cp -a host_source_path container:destination_path
docker cp -a container:source_path host_destination_path
C'est à peu près ça. Vous voyez à quel point il est facile de copier des fichiers entre l'hôte et le conteneur à l'aide de la commande docker cp.
Si vous avez des questions ou des suggestions, faites-le moi savoir dans le système de commentaires.