Copiare i file dal contenitore Docker all'host

Sto pensando di usare Docker per costruire le mie dipendenze su un server di integrazione continua (CI), in modo da non dover installare tutti i runtime e le librerie sugli agenti stessi.

Per ottenere questo avrei bisogno di copiare gli artefatti di costruzione che sono costruiti all'interno del contenitore nell'host. È possibile?

Soluzione

Per copiare un file da un contenitore all'host, si può usare il comando

docker cp :/file/path/within/container /host/path/target

Ecco un esempio:

$ sudo docker cp goofy_roentgen:/out_read.jpg .

Qui goofy_roentgen è il nome del contenitore che ho ottenuto dal seguente comando:

$ sudo docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                            NAMES
1b4ad9311e93        bamos/openface      "/bin/bash"         33 minutes ago      Up 33 minutes       0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp   goofy_roentgen

Puoi anche usare (parte di) l'ID del Contenitore. Il seguente comando è equivalente al primo

$ sudo docker cp 1b4a:/out_read.jpg .
Commentari (19)

Montate un "volume" e copiate gli artefatti lì dentro:


mkdir artifacts
docker run -i -v ${PWD}/artifacts:/artifacts ubuntu:14.04 sh 
Commentari (6)

Monta un volume, copia gli artefatti, regola l'id del proprietario e l'id del gruppo:

mkdir artifacts
docker run -i --rm -v ${PWD}/artifacts:/mnt/artifacts centos:6 /bin/bash  /mnt/artifacts/ls.txt
echo Changing owner from \$(id -u):\$(id -g) to $(id -u):$(id -u)
chown -R $(id -u):$(id -u) /mnt/artifacts
COMMANDS
Commentari (0)