Dockerfile, imagem do Docker e ambiente reproduzível

4

A documentação e as anotações usuais no docker mencionam a versão controlando e compartilhando o Dockerfile , que deve permitir que qualquer pessoa crie uma imagem idêntica. Isso parece ótimo, no entanto, normalmente temos comandos como este.

RUN apt-get update
pip install..

Que poderia instalar coisas / versões / patches diferentes com base no tempo de execução e tornar a depuração difícil.

Por outro lado, o compartilhamento de imagens do docker não oferece benefícios como o controle de versão e o que é exatamente diferente entre duas imagens.

  • Qual desses (dockerfile vs image) deve ser a referência a ser usada para desenvolvimento e implantação?
  • O Dockerfile deve ter mais detalhes sobre atualizações exatas? mesmo assim, a imagem de base pode ser diferente com base em quando você a está executando.
por Rajesh Chamarthi 05.03.2017 / 06:23

1 resposta

2

Acho que prefiro compartilhar o Dockerfile. Obviamente você precisa especificar uma versão na instrução FROM em seu Dockerfile. Como, por exemplo, versões diferentes do Ubuntu terão diferentes pacotes disponíveis.

Para dependências do sistema ou -dev, você pode querer deixar a versão flutuar livremente para sempre instalar a mais recente.

Pacotes Debian / Ubuntu

Para qualquer programa instalado com apt-get , por exemplo curl , você pode obter o número da versão com

apt-cache policy curl | grep -oP 'Installed: \K\S+'

e edite seu Dockerfile para ler algo como

RUN apt-get install curl=7.47.0-1ubuntu2.2

Python

As versões do Python são facilmente manipuladas com pip . Extraia todos os números de versão dos pacotes instalados e armazene-os em um arquivo de requisitos como este:

pip freeze > requirements.txt

Em seguida, na sua execução do Dockerfile

RUN pip install -r requirements.txt
    
por 12.03.2017 / 00:59