Kopieren von Dateien vom Docker-Container auf den Host

Ich denke an die Verwendung von Docker, um meine Abhängigkeiten auf einem Continuous Integration (CI) Server zu erstellen, so dass ich nicht alle Laufzeiten und Bibliotheken auf den Agenten selbst installieren muss.

Um dies zu erreichen, müsste ich die Build-Artefakte, die im Container erstellt werden, zurück auf den Host kopieren. Ist das möglich?

Lösung

Um eine Datei aus einem Container auf den Host zu kopieren, können Sie den Befehl

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

Hier ist ein Beispiel:

$ sudo docker cp goofy_roentgen:/out_read.jpg .

Hier ist goofy_roentgen der Containername, den ich mit dem folgenden Befehl erhalten habe:

$ 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

Sie können auch (einen Teil) der Container-ID verwenden. Der folgende Befehl ist äquivalent zum ersten

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

Hängen Sie ein "Volume" ein und kopieren Sie die Artefakte dorthin:


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

Mounten Sie ein Volume, kopieren Sie die Artefakte, passen Sie die Eigentümer- und Gruppen-ID an:

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