GEEKS

Como atualizar automaticamente os contêineres do Docker do seu registro de imagens

Como atualizar automaticamente os contêineres do Docker do seu registro de imagens



O Docker é uma ferramenta que facilita a execução de aplicativos em contêineres portáteis. Um dos principais benefícios da conteinerização são as atualizações facilmente gerenciadas – tudo o que você precisa fazer é reiniciar com um novo contêiner, e existem ferramentas que podem automatizar todo esse processo.

RELACIONADO: Como atualizar contêineres do Docker para aplicar atualizações de imagem

Como implantar contêineres do Docker automaticamente

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 a imagem do seu aplicativo e é muito fácil configurar compilações automatizadas de contêineres da fonte em serviços como o Github. Uma vez construído e enviado para um “registro de imagem”, ele pode ser baixado e executado por qualquer servidor que execute o Docker.

Isso é ótimo, mas ainda envolve a execução de comandos no servidor toda vez que você deseja atualizar. Se você gostaria que fosse realmente automático, então você pode estar interessado em uma ferramenta chamada Torre de Vigia.

Watchtower é um utilitário que é executado em seu host do Docker e verifica periodicamente se há atualizações nos contêineres. Se detectar uma nova versão de uma imagem do registro de contêiner, ele matará automaticamente o contêiner e o reiniciará imediatamente.

Este é um recurso muito atraente, mas antes de instalá-lo, é importante discutir as desvantagens. Fazer atualizações de forma totalmente automática significa que você terá menos controle sobre o pace e os testes anteriores da implantação, pois sempre que o dedicate em seu repositório passar e acionar uma compilação, os contêineres em execução serão atualizados. Se você não for o proprietário da imagem que está sendo executada, ela poderá ser atualizada inesperadamente se você não as excluir da Torre de Vigia.

Se você não estiver fazendo atualizações todos os dias, talvez seja melhor usar uma GUI do Docker como o Portainer, que permite navegar em 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.

Tela de detalhes do contêiner do Portainer

Se você quiser começar a usar o Portainer, leia nosso guia para configurá-lo para saber mais.

RELACIONADO: Como começar com o Portainer, uma interface de usuário da Internet para 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 Torre de Vigia e também cria uma ligação montando 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:

model: "3"
services and products:
  watchtower:
    symbol: containrrr/watchtower
    restart: at all times
    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 definindo um rótulo no contêiner que está sendo verificado.

Você precisará definir este sinalizador na linha de comando durante docker runou especifique-o no processo de compilação do contêiner usando o LABEL diretiva.

docker run -d --label=com.centurylinklabs.watchtower.allow=false nginx

LABEL com.centurylinklabs.watchtower.allow="false"

Você também pode fazer o inverso, passando o --label-enable sinalizar ao iniciar a Torre de Vigia e definir os contêineres como “true”.

Executando o Watchtower como um serviço de composição do Docker

Um método melhor, especialmente quando você só precisa executar o Watchtower para um único contêiner, é empacotá-lo em um docker-compose.yml arquivo e crie um escopo para a Torre de Vigia verificar. Neste exemplo, a imagem NGINX recebe o escopo “nginx” e a Torre de Vigia está configurada para atualizar apenas contêineres com esse rótulo de escopo.

model: '3'

services and products:
  nginx:
    symbol: nginx
    labels:
      - "com.centurylinklabs.watchtower.scope=nginx"

  watchtower:
    symbol: 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. Se você executar o Watchtower sem um escopo no mesmo sistema, ele substituirá essas instâncias.

Usando registros de terceiros

Por padrão, o Watchtower só funciona com o Docker Hub e qualquer outro registro público. Isso exclui certos serviços como o Container Registry do Github, que requer um nome de usuário e um Non-public Get right of entry to Token (PAT) para extrair imagens.

Você pode adicionar configuração 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 montaria adicional para este config.json Arquivo.

docker run -d 
    -v config.json:/config.json
    -v /var/run/docker.sock:/var/run/docker.sock 
    containrrr/watchtower



Fonte da Notícia: www.howtogeek.com

Artigos relacionados

Botão Voltar ao topo