[ad_1]
O Docker é uma ferramenta que facilita a execução de aplicativos em contêineres portáteis. Um dos principais benefícios da conteinerização é que as atualizações são facilmente gerenciadas: tudo que você precisa fazer é reiniciar com um novo container, e existem ferramentas que podem automatizar todo esse processo.
RELACIONADO: Como atualizar os contêineres do Docker para aplicar atualizações de imagem
Implantação automática de contêineres do Docker
O Docker é uma ótima opção para pipelines de integração contínua/implantação contínua (CI/CD), pois ajuda a automatizar as duas etapas do processo. Os próprios Dockerfiles fornecem uma maneira de criar sua imagem de aplicativo e é bastante fácil configurar compilações automatizadas de contêineres da origem em serviços como o Github. Uma vez criado e enviado para um “registro de imagem”, qualquer servidor que execute o Docker pode baixá-lo e executá-lo.
Isso é ótimo, mas ainda envolve a execução de comandos no servidor toda vez que você deseja atualizar. Se você deseja torná-lo verdadeiramente automático, pode estar interessado em uma ferramenta chamada Torre de Vigia.
Watchtower é um utilitário executado em seu host Docker e verifica periodicamente se há atualizações nos contêineres. Se detectar uma nova versão de uma imagem de registro de contêiner, ele removerá automaticamente o contêiner e o reiniciará imediatamente.
Esse é um recurso muito atraente, mas antes de instalá-lo, é importante analisar as desvantagens. Fazer atualizações de forma totalmente automática significa que você tem menos controle sobre o tempo de implantação e pré-teste, porque toda vez que você se compromete com seu repositório e aciona uma compilação, seus contêineres em execução serão atualizados. Se você não for o proprietário da imagem em execução, ela poderá ser atualizada inesperadamente se você não a excluir da Torre de Vigia.
Se você não fizer atualizações todos os dias, é melhor usar uma GUI do Docker como o Portainer, que permite navegar pelos contêineres em execução em seus servidores e clicar em um botão para atualizá-los automaticamente. Isso lhe dá mais controle sobre o processo e pode ajudar a evitar atualizações inesperadas.
Se você quiser começar a usar o Portainer, leia nosso guia para configurá-lo para obter mais informações.
RELACIONADO: Como começar a usar o Portainer, uma interface do usuário da Web para o Docker
Usando a Torre de Vigia
O Watchtower é empacotado como um contêiner do Docker, por isso é muito fácil de instalar – apenas um comando o colocará em funcionamento:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
Isso inicia um contêiner Watchtower e também cria um link que monta o docker.sock
do host para que ele possa interagir com a API do Docker. Por padrão, isso verifica todos os contêineres em execução em busca de atualizações a cada 24 horas, que podem ser alteradas com o --interval
bandeira.
Você também pode criar um docker-compose.yml
arquivo para iniciar a Torre de Vigia como um serviço:
version: "3" services: watchtower: image: containrrr/watchtower restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock - /root/.docker/config.json:/config.json command: --interval 300
“Todos os contêineres em execução” provavelmente incluem algumas coisas que você prefere não atualizar inesperadamente, incluindo imagens do Docker Hub sobre as quais você não tem controle. Você pode excluir contêineres das atualizações, mas apenas colocando uma tag no contêiner que está sendo verificado.
Você precisará definir este sinalizador na linha de comando durante docker run
ou especifique-o no processo de compilação do contêiner usando o LABEL
diretiva.
docker run -d --label=com.centurylinklabs.watchtower.enable=false nginx LABEL com.centurylinklabs.watchtower.enable="false"
Você também pode fazer o contrário, passando o --label-enable
verifique ao iniciar a Torre de Vigia e defina os contêineres como “true”.
Execute o Watchtower como um serviço do Docker Compose
Um método melhor, especialmente quando você só precisa executar o Watchtower para um único contêiner, é empacotá-lo em um contêiner existente. docker-compose.yml
arquivo e crie um escopo para a Torre de Vigia procurá-lo. Neste exemplo, a imagem NGINX tem o escopo “nginx” e a Torre de Vigia está configurada para atualizar apenas contêineres com essa tag de escopo.
version: '3' services: nginx: image: nginx labels: - "com.centurylinklabs.watchtower.scope=nginx" watchtower: image: containrrr/watchtower volumes: - /var/run/docker.sock:/var/run/docker.sock command: --interval 300 --scope nginx labels: - "com.centurylinklabs.watchtower.scope=nginx"
Se você usar o Watchtower dessa maneira, empacotado em um arquivo de composição com um escopo, ele permitirá que você execute várias instâncias. No entanto, se você executar o Watchtower sem um escopo no mesmo sistema, ele substituirá essas instâncias.
Uso de registros de terceiros
Por padrão, o Watchtower só funciona com o Docker Hub e quaisquer outros registros públicos. Isso exclui certos serviços como o Github Container Registry, que requer um nome de usuário e um Personal Access Token (PAT) para extrair imagens.
Você pode adicionar configurações para registros privados criando um config.json
arquivo com o seguinte conteúdo:
{ "auths": { "ghcr.io": { "auth": "credentials" } } }
O valor “credentials” deve ser definido como uma string codificada em base64 do seu username:password
combo ou token de acesso pessoal no caso do Github.
echo -n 'username:password' | base64
Então, quando você executar a Torre de Vigia, passe uma montagem extra para isso config.json
processos.
docker run -d -v config.json:/config.json -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
[ad_2]