Docker CP

Docker CP
“Non è dubbio che Docker abbia rivoluzionato il moderno ambiente per sviluppatori. La possibilità di impacchettare le tue applicazioni in un unico pacchetto e spedirle su qualsiasi piattaforma è a dir poco rivoluzionaria.

Ma abbastanza elogi su Docker. In questo articolo, discuteremo di come copiare i file da e verso un contenitore al sistema host e viceversa."

Iniziamo

Docker CP

Docker CP è un'utilità della linea di comando che consente di copiare file e directory tra i sistemi. Il comando assume una sintassi molto semplice che consente un flusso di lavoro facile.

La sintassi del comando:

Docker CP [Options] Container: SRC_Path Dest_Path |-

L'utilità CP copierà i file specificati da SRC_Path su Dest_Path. Ciò consente di copiare dal contenitore nel sistema host e viceversa.

Il contenitore può essere eseguito o interrompere lo stato e il comando eseguirà correttamente l'operazione di copia.

Se viene specificata una directory, il comando copierà i file in modo ricorsivo nella destinazione specificata.

Per copiare i file dal sistema host a un contenitore, è possibile utilizzare la sintassi:

$ Docker CP Host_Path Container_id: Path

La stessa sintassi del comando si applica quando si desidera copiare i file dal contenitore al sistema host:

$ Docker CP Container_ID: src_path host_path

Vediamo come possiamo raggiungere questo obiettivo con esempi pratici.

Ottieni contenitori in esecuzione

Il primo passo è ottenere i nomi e gli ID dei contenitori in esecuzione. Possiamo farlo con il comando Docker PS.

$ Docker PS

Una volta ottenuto il contenitore e il nome o l'ID, possiamo procedere. È possibile ottenere l'ID nelle colonne ID e nomi del contenitore.

Copia i file dal sistema host a container

Supponiamo di avere un file chiamato backup.Tar sul desktop del sistema host e vuoi copiarlo nel contenitore Debian11.

Possiamo eseguire il comando:

Docker CP ~/Desktop/Backups.Tar Debian11:/Home

Il comando sopra copierà i backup.File di catrame nella directory home del contenitore specificato.

Possiamo verificare che il file esista eseguendo il comando:

$ Docker Exec -ti Debian11 /Bin /Bash

Il comando sopra dovrebbe consentire di accedere al contenitore e di generare una shell bash.

Ora puoi elencare i file e le directory nel contenitore come:

root@f657ea827600: /# ls -la /home
Totale 7188
root drwxr-xr-x 1 root 4096 7 giugno 02:09 .
Drwxr-xr-x root root 4096 giugno 7 02: 09…
-RW-R-R-- 1 radice root 7348816 7 giugno 02:08 Backups.catrame

Possiamo vedere che il file è stato copiato correttamente nel contenitore.

Se si desidera utilizzare l'ID contenitore, è possibile eseguire il comando:

Docker CP ~/Desktop/Backups.TAR F657EA827600:/Home

Nota: se un file con un nome simile esiste come percorso di destinazione specificato, il comando lo sovrascriverà senza prompt.

Docker Copy File da Container a Host

Possiamo anche utilizzare il comando per copiare i file dal contenitore nel sistema host. Ad esempio, supponiamo di voler copiare i registri dal contenitore nella directory dei registri nella cartella desktop dell'host.

Possiamo eseguire il comando:

$ sudo Docker CP Debian11:/var/log/~/desktop/logs

Nel comando sopra, diciamo al comando Docker CP di copiare i file dalla directory /var /log nella directory di Debian11 nella directory dei registri nel sistema host.

Possiamo verificarlo eseguendo il comando:

$ ls -ls ~/desktop/logs
Totale 72
0 DRWXR-XR-X 3 Staff root 96 27 maggio 03:00 APT
0 -rw-rw ---- 1 staff root 0 27 maggio 03:00 BTMP
8 -RW-R-R-- 1 Staff radice 3232 27 maggio 03:00 Faillog
64 -RW-RW-R-- 1 Staff root 29896 27 maggio 03:00 Lastlog
0 -rw-rw-r-- 1 staff root 0 27 maggio 03:00 WTMP

Attributi Docker CP Preserve

Noterai che una volta che copiamo un file da e verso il sistema host, Docker non preserva gli attributi come autorizzazioni, UID, ecc.

Possiamo risolverlo aggiungendo il flag -a nel comando Docker CP.

$ Docker CP -a contenitore host_path: percorso
$ Docker CP -A Container: Path Host_Path

Un esempio è come mostrato:

Sudo Docker CP -A Debian11:/var/log/~/desktop/logs

Possiamo vedere che le autorizzazioni sono simili a uno dei file copiati nel contenitore.

Conclusione

In questo tutorial, hai imparato come utilizzare il comando Docker CP per copiare i file da e verso un contenitore Docker al sistema host e viceversa.

Grazie per aver letto!!