Cópia de ficheiros do contentor Docker para o anfitrião

I'estou pensando em usar o Docker para construir minhas dependências em um servidor de Integração Contínua (CI), para que eu não'não tenha que instalar todos os tempos de execução e bibliotecas nos próprios agentes.

Para conseguir isso, eu precisaria copiar os artefatos de construção que são construídos dentro do contêiner de volta para o anfitrião. Isso é possível?

Solução

Para copiar um arquivo de um container para o host, você pode usar o comando

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

Aqui's um exemplo:

$ sudo docker cp goofy_roentgen:/out_read.jpg .

Aqui **goofy_roentgen*** é o nome do recipiente que recebi do seguinte 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

Você também pode usar (parte de) o **ID do recipiente***. O seguinte comando é equivalente ao primeiro

$ sudo docker cp 1b4a:/out_read.jpg .
Comentários (19)

Monte um " volume" e copie os artefatos para lá:


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

Monte um volume, copie os artefatos, ajuste a identificação do proprietário e a identificação do grupo:

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
Comentários (0)