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

 

Risorse utili

 

Ti potrebbe interessare anche…

 

Condividi la tua opinione