Copiare file da e verso un container Docker

Quando lavori con Docker, potrebbe essere necessario copiare file da e verso un container Docker e il tuo computer.
Dopo aver creato l’immagine Docker e aver ottenuto il vostro container, dover eseguire la build ancora e ancora solo per aggiungere un file al suo interno potrebbe essere noioso, perchΓ© capita che le immagini siano di dimensioni abbastanza grandi…
Docker perΓ² ci fornisce dei comandi molto utili che ci consentono di copiare senza problemi i file da e verso un container Docker e il sistema locale.
In questo articolo, discuteremo come utilizzare i comandi Docker cp vedendo degli esempi pratici!
Copia di file dal container al computer locale
Segui i passaggi seguenti per copiare un file da un contenitore Docker a un computer locale:
Crea un container
Come prova, Γ¨ possibile utilizzare l’immagine di Ubuntu e creare un file di prova al suo interno, eseguendo i comandi riportati:
docker run -it --name my-container ubuntu
>>>
root@e625c04df0b0:/# cd home/
root@e625c04df0b0:/home# ls -la
total 8
drwxr-xr-x 2 root root 4096 Apr 15 2020 .
drwxr-xr-x 1 root root 4096 Apr 5 15:16 ..
root@e625c04df0b0:/home# touch myfile.txt
root@e625c04df0b0:/home# echo "pippo" > myfile.txt
root@e625c04df0b0:/home# cat myfile.txt
pippo
Trova l’ID del container
Adesso andiamo a recuperare l’ID del container da cui vogliamo copiare il file eseguendo il comando seguente:
docker ps -a
>>>
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e3c6d689766e ubuntu "bash" 19 seconds ago Up 19 seconds my-container
Copia il file sul tuo sistema locale
Γ possibile utilizzare il comando docker cp per copiare il file, specificando l’ID del container separato da “:” con il path assoluto del file e poi specificando il percorso -sempre assoluto- di dove verrΓ salvato in locale.
Il comando ha questa sintassi:
docker cp [CONTAINER_ID]:[PATH_ASSOLUTO_SORGENTE] [PATH_ASSOLUTO_DESTINAZIONE]
Esempio: docker cp 123abc:/home/folder/file.txt /tmp/file.txt
root@system:~$ docker cp e3c6d689766e:/home/myfile.txt /tmp/myfile.txt
root@system:~$ ls -la /tmp/
>>> -rw-r--r-- 1 root root 6 Apr 5 19:19 myfile.txt
Copia di file da locale al container
Puoi usare sempre l’istruzione cp con la seguente sintassi -tieni presente che il container dev’essere up&running-:
docker cp [PATH_ASSOLUTO_SORGENTE] [CONTAINER_ID]:[PATH_ASSOLUTO_DESTINAZIONE]
Esempio: docker cp 123abc:/home/folder/file.txt /tmp/file.txt
root@system:~$ docker cp /tmp/myfile.txt
e3c6d689766e:/home/myfile.txt
Per verificare che il file sia stato copiato correttamente, utilizzare il comando seguente:
root@system:~$ docker exec -it my-container /bin/bash
root@e3c6d689766e:/# ls -la /tmp/
>>> -rw-r--r-- 1 root root 6 Apr 5 19:19 myfile.txt