//Come copiare file dentro un Docker

Come copiare file dentro un Docker

0 votes
Share on FacebookShare on Google+Tweet about this on TwitterEmail this to someonePrint this page

This post has already been read 585 times!

Giorni fa mi sono trovato con un problema, dovevo copiare dei file dentro un contenitore docker, la cosa in sé è semplice, peró stavo lavorando con una versione vecchia di docker che a prima vista non supporta il comando docker cp e non ha il server openssl installato.  Rulla rete ho trovato un workarround efficace per copiare file direttamente nel docker, che puo risultare utile in situazioni eccezionali.

Prima di tutto spiegheró normalmente come questa operazione puo essere portata a termine, avviamo il nostro contenitore :

matteo@Duff:~$ docker run -it debian bash 
root@0c67c84ecd2e:/# ls
bin   dev  home  lib64	mnt  proc  run	 srv  tmp  var
boot  etc  lib	 media	opt  root  sbin  sys  usr
root@0c67c84ecd2e:/#

contolliamo l’id del nostro contenitore  :

matteo@Duff:~$ docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
0c67c84ecd2e        debian              "bash"              11 seconds ago      Up 9 seconds                            kickass_perlman
matteo@Duff:~$

creaiamo un file di test e copiamolo direttamente nel contenitore :

matteo@Duff:~$ echo "this is a test file" > test.txt
matteo@Duff:~$ docker cp test.txt 0c67c84ecd2e:/tmp/

possiamo controllare che il file è stato copiato correttamente

root@0c67c84ecd2e:/# ls /tmp/
test.txt
root@0c67c84ecd2e:/# 

bene, il workarrount che to trovato giorni fa per copiare il file senza avere accesso al contenitore è :

matteo@Duff:~$ cat test.txt | docker exec -i 0c67c84ecd2e  bash -c "cat > /tmp/file2.txt"

come é possibile vedere il file é stato creato correttamente 

root@0c67c84ecd2e:/tmp# cat file2.txt 
this is a test file
root@0c67c84ecd2e:/tmp#