Kopiering af filer fra Docker-container til vært

Jeg overvejer at bruge Docker til at bygge mine afhængigheder på en CI-server (Continuous Integration), så jeg ikke behøver at installere alle runtimes og biblioteker på selve agenterne.

For at opnå dette ville jeg have brug for at kopiere de byggeartefakter, der er bygget inde i containeren, tilbage til værten. Er det muligt?

Løsning

For at kopiere en fil fra en container til værten kan du bruge kommandoen

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

Her er et eksempel:

$ sudo docker cp goofy_roentgen:/out_read.jpg .

Her er goofy_roentgen det containernavn, jeg fik fra følgende kommando:

$ 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

Du kan også bruge (en del af) Container ID. Følgende kommando svarer til den første

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

Monter en "volumen" og kopier artefakterne derhen:


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

Monter et volumen, kopier artefakterne, juster ejer-id og gruppe-id:

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
Kommentarer (0)