Esempio Docker cp: copia di file tra host e contenitore
Il comando docker copy consente di copiare file dall'host al contenitore e dal contenitore all'host. Scopri come utilizzare questo comando.
Il comando Docker cp è una pratica utility che consente di copiare file e cartelle tra un contenitore e il sistema host.
Se desideri copiare file dal tuo sistema host al contenitore, dovresti utilizzare il comando docker cp in questo modo:
docker cp host_source_path container:destination_path
Se desideri copiare file dal contenitore al sistema host, utilizza questo comando:
docker cp container:source_path host_destination_path
Potrebbe sembrare un po’ intimidatorio, quindi lascia che te lo spieghi con alcuni esempi pratici.
Esempi di comandi Docker cp
Nel mio tutorial, ho installato Docker su Ubuntu. Ma i passaggi sono gli stessi per tutte le distribuzioni che eseguono docker.
Spero che tu sappia come eseguire un contenitore docker perché avrai bisogno di un contenitore in esecuzione.
Elenca prima i tuoi contenitori in esecuzione utilizzando il comando docker ps:
abhishek@linux-console:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8353c6f43fba 775349758637 "bash" 8 seconds ago Up 7 seconds ubu_container
È necessario conoscere l'ID del contenitore o il nome del contenitore. Nel mio caso, il nome del contenitore docker è ubu_container. e l'ID contenitore è 8353c6f43fba.
Se vuoi verificare che i file siano stati copiati correttamente, puoi inserire il tuo contenitore nel modo seguente e quindi utilizzare i normali comandi Linux:
docker exec -it ubu_container bash
1. Copia i file dal sistema host al contenitore docker
La copia con docker cp è simile al comando copy in Linux.
Copierò un file denominato a.py nella directory home/dir1 nel contenitore.
docker cp a.py ubu_container:/home/dir1
Se il file viene copiato correttamente, non vedrai alcun output sullo schermo. Se il percorso di destinazione non esiste, vedresti un errore:
abhishek@linux-console:~$ sudo docker cp a.txt ubu_container:/home/dir2/subsub
Error: No such container:path: ubu_container:/home/dir2
Se il file di destinazione esiste già, verrà sovrascritto senza alcun avviso.
Puoi anche utilizzare l'ID del contenitore invece del nome del contenitore:
docker cp a.py 8353c6f43fba:/home/dir1
2. Copia i file dal contenitore docker al sistema host
Il comando docker cp viene eseguito solo nel sistema host. Non è possibile eseguirlo nel contenitore.
Anche se desideri copiare file dal contenitore docker al sistema host, devi essere nel sistema host e utilizzare il comando nel modo seguente:
sudo docker cp ubu_container:/home/dir1/new.txt /home/abhishek
3. Copiare le directory tra il contenitore e il sistema host
Se vuoi copiare la directory in Linux usando il comando cp, dovrai usare l'opzione ricorsiva -r.
Ma nel comando docker cp non sono necessarie tali opzioni. Lo stesso comando funziona per copiare sia file che cartelle.
docker cp /home/abhishek/my_dir ubu_container:/home
sudo docker cp ubu_container:/home/my_dir /home/abhishek
4. Copia file e directory con attributi originali
È possibile utilizzare la modalità archivio durante la copia con l'opzione -a. Con questo, puoi copiare tutti i permessi del file, UID e GID del file originale.
docker cp -a host_source_path container:destination_path
docker cp -a container:source_path host_destination_path
Questo è tutto. Vedi quanto è facile copiare file tra host e contenitore usando il comando docker cp.
Se hai domande o suggerimenti, faccelo sapere nel sistema dei commenti.