Kopiera filer från Docker-behållare till värd

Jag funderar på att använda Docker för att bygga mina beroenden på en CI-server (Continuous Integration), så att jag inte behöver installera alla körtider och bibliotek på själva agenterna.

För att uppnå detta skulle jag behöva kopiera de byggartefakter som byggs i behållaren tillbaka till värden. Är det möjligt?

Lösning

För att kopiera en fil från en behållare till värden kan du använda kommandot

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

Här är ett exempel:

$ sudo docker cp goofy_roentgen:/out_read.jpg .

Här är goofy_roentgen det behållarnamn som jag fick från följande 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 också använda (en del av) Container ID. Följande kommando är likvärdigt med det första

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

Montera en "volym" och kopiera artefakterna dit:


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

Montera en volym, kopiera artefakter, justera ägar-id och grupp-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)