cria um contêiner de dados a partir de outra imagem do docker

1

Eu tenho uma imagem do docker que tem cerca de 900MB e tem um diretório /data onde todos os dados que eu quero estão dentro e também um diretório /data/.git que eu gostaria de excluir.

Eu gostaria de criar um contêiner de dados (usando a imagem do busybox, por exemplo) com apenas os dados sob o /data , excluindo o diretório /data/.git

Como faço isso da maneira mais eficiente?

O /data excluindo o /data/.git é somente sobre 130MB

Então, basicamente, eu terei um contêiner de dados com cerca de 130MB a 200MB em comparação com a outra imagem do docker com 900MB de tamanho

Obrigado

    
por uberrebu 10.10.2016 / 23:00

1 resposta

1

Eu migraria para um volume nomeado e criaria com o seguinte:

docker run -it --rm -v data-vol:/target your_image \
  /bin/bash -c "cp -av /data/* /target"

O cp -av /data/* /target irá ignorar todos os arquivos de ponto, então você pode precisar adicionar outros manualmente se tiver mais do que apenas o ".git", por exemplo cp -av /data/* /data/.app-files /target

Se você estiver disposto a criá-lo primeiro com uma cópia completa de / data e depois excluir a pasta .git mais tarde, isso será ainda mais fácil:

docker run -it --rm -v data-vol:/data your_image rm -rf /data/.git

Contanto que "data-vol" não tenha sido inicializado, ele será criado com o conteúdo completo / de dados do Docker. E então o primeiro comando que você executa é limpar a pasta ".git".

Quando você tiver o volume "data-vol", poderá reutilizá-lo em outro outro contêiner com:

docker run -v data-vol:/data another_image
    
por 13.10.2016 / 03:31