A aplicação é atualizada dentro dos contêineres do Docker?

8

Normalmente, em um servidor, as atualizações automáticas de patches relacionados à segurança são configuradas. Portanto, se eu estiver executando o MySQL 5.5 e um novo patch de segurança for lançado, o Ubuntu Server aplicará a atualização e reiniciará o MySQL para me manter protegido de maneira automatizada. Obviamente, isso pode ser desabilitado, mas é útil para aqueles que são um pouco preguiçosos;)

Existe tal conceito dentro de um contêiner Docker? Se eu estou executando o MySQL em um contêiner Docker, eu preciso parar o contêiner constantemente, abrir um shell nele, atualizar e atualizar o MySQL?

    
por Naftuli Kay 07.04.2014 / 08:55

2 respostas

4

TL; DR : se você não construir em si mesmo, isso não vai acontecer.

A maneira efetiva de fazer isso é simplesmente escrever um script de início personalizado para o seu contêiner especificado por CMD no seu Dockerfile . Nesse arquivo, execute um apt-get update && apt-get upgrade -qqy antes de iniciar o que você estiver executando.

Você tem algumas maneiras de garantir que as atualizações cheguem ao contêiner:

  1. Defina uma tarefa cron em seu sistema operacional host para reiniciar o contêiner em uma programação, fazendo com que ela seja atualizada e atualizada em um cronograma.
  2. Inscreva-se em atualizações de segurança para os softwares e, em seguida, na atualização de um pacote afetado, reinicie o contêiner.

Não é a coisa mais fácil de otimizar e automatizar, mas é possível.

    
por 05.05.2014 / 19:27
12

Eu não concordo com a resposta aceita. Primeiro, você deve projetar seus contêineres com a separação de estado em mente (no caso do MySQL isso significa que pelo menos /var/lib/mysql entra em seu próprio volume ). Em segundo lugar, você deve determinar uma estratégia para atualizações; O estado da arte seria criar imagens versionadas para cada conjunto de atualizações de pacotes do apt e tê-las testadas antes de trocar o volume de dados do contêiner em execução para o novo. Isso pode incluir um tempo de inatividade ou nenhum tempo de inatividade se você usar algo como hipache .

Essa configuração, embora mais cara para a configuração inicial, é a mesma usada por empresas com uma escala de massa de contêineres e será mais barata de manter com o tempo.

Além disso, os upgrades de pacotes podem eventualmente quebrar seus contêineres em execução, portanto, aplicá-los a contêineres em execução não é uma prática recomendada, pois não é para executar software desatualizado.

    
por 27.09.2014 / 09:16

Tags