Como faço para gravar em um arquivo dentro de um contêiner do Docker em execução?

2

Com cat , posso ler de um arquivo para stdout. Dessa forma, posso, por exemplo, canalizar um arquivo para fora de um contêiner docker:

docker exec my_container cat file > file_on_host

Quando eu quero fazer o oposto, eu precisaria de um comando que lê de stdin e salva em um arquivo. Existe tal comando?

docker exec my_container ??? file < file_on_host
    
por AndreKR 11.11.2016 / 17:56

3 respostas

2

Semelhante à sua abordagem,

docker exec -i my_container dd of=file < file_on_host

que oferece um bom resumo de status e não grava os dados no stdout.

Existem provavelmente algumas outras opções, por exemplo, cp /dev/stdin file (o que pode não funcionar, dependendo se o sistema operacional do seu contêiner suporta /dev/stdin ) e sh -c "cat > file" .

    
por 12.11.2016 / 08:48
5

tee pode fazer isso:

docker exec -i my_container tee file < file_on_host

O -i é necessário para o stdin funcionar.

Ele também mostrará o arquivo, o que pode ser evitado redirecionando para o /dev/null :

do host
docker exec -i my_container tee file < file_on_host > /dev/null
    
por 11.11.2016 / 18:10
-1

Eu não devo ter entendido a pergunta, porque você pode usar o redirecionamento simples como você fez na primeira vez

docker exec my_container < file_on_host > file

ou use cat (novamente, com redirecionamento).

    
por 11.11.2016 / 18:05