Header Ads

Como manter os contêineres do Docker em execução quando o daemon parar

Quando o Docker termina, todos os seus contêineres são interrompidos. A instalação padrão não permite que os containers sejam executados, a menos que o daemon também esteja ativo. Veja como minimizar o tempo de inatividade da carga de trabalho mantendo os contêineres ativos durante uma interrupção do daemon.

Por que isso é importante?

O Docker provou ser um sistema confiável, capaz de oferecer suporte a soluções em produção. Isso não quer dizer que seja infalível. Você ainda pode encontrar uma falha que tire o daemon de ação, deixando seus contêineres off-line.

Em outro cenário, o gerenciador de pacotes do seu sistema operacional pode atualizar automaticamente o Docker, causando uma reinicialização do daemon e um breve período de inatividade. Idealmente, essas situações podem ser resolvidas sem qualquer impacto em suas cargas de trabalho. Como o daemon gerencia apenas contêineres, implementando comandos como docker run e docker rm, não há necessidade inerente de permanecer durante o período intermediário no ciclo de vida de um contêiner.

Container Live Restore

O Docker oferece suporte a um sistema chamado “ live restore ” o que torna isso possível. Em vez de encerrar os contêineres durante o desligamento do daemon, o Docker os manterá em execução. Ele continuará de onde parou quando for reiniciado.

A restauração ao vivo deve ser ativada manualmente. Você pode usá-lo apenas uma vez executando dockerd com a sinalização --live-restore:

[PL]

 sudo docker --live-restore 

Publicidade

Para habilitar permanentemente a restauração ao vivo, adicione-o ao seu arquivo de configuração do Docker daemon. Isso geralmente é encontrado em /etc/docker/daemon. json. Você precisará criar o arquivo se ele ainda não existir.

{" live-restore & quot ;: true}

Em seguida, você precisa instruir o Docker a recarregar sua configuração. Uma recarga não afetará seus contêineres, ao contrário de uma reinicialização completa do daemon.

 sudo systemctl reload docker 

A restauração em tempo real deve agora ser ativada. Você pode testá-lo parando o daemon do Docker.

 docker sudo systemctl stop 

Todos os contêineres em execução devem permanecer ativos, mesmo que o daemon esteja encerrado. Você não conseguirá usar os comandos do docker, pois a conexão do daemon será encerrada, mas os contêineres continuarão em execução e manterão suas conexões de rede.

O Docker detectará automaticamente os contêineres existentes quando for reiniciado. Você poderá continuar de onde parou, sem ter que sofrer nenhum tempo de inatividade.

Manipulação de execução sem daemon sustentado

A execução de contêineres sem uma conexão de daemon ativa não deve ter consequências graves, mesmo por um período prolongado. No entanto, você verá que os logs começam a se perder durante uma interrupção prolongada do daemon.

Publicidade

Os contêineres do Docker canalizam seus logs para um buffer primeiro a entrar, primeiro a sair (FIFO). O daemon do Docker lê o conteúdo do buffer para criar os arquivos de log persistentes que você visualiza com os logs do docker.

O tamanho do buffer padrão é de apenas 64K, então ele pode se esgotar se o daemon &’ não estiver lendo ativamente seu conteúdo. Quando o buffer é preenchido, nenhum outro registro pode ser manipulado até que o daemon conclua uma liberação de buffer. Você pode aumentar o tamanho do buffer editando o valor de / proc / sys / fs / pipe-max-size.

Advertências do Live Restore

O Live Restore deve abranger a maioria dos cenários em que o daemon do Docker é encerrado e recuperado posteriormente. Isso inclui atualizações do Docker, mas apenas entre versões de patches menores. Se você instalar uma nova versão principal do Docker (como 19.03 a 20.10), o Live Restore não será usado e o daemon do Docker sempre será reiniciado.

Você deve ter cuidado ao usar o Live Restore como uma forma de editar as configurações do daemon do Docker imediatamente. Alterar algumas opções, como endereços IP de ponte, evitará que os contêineres sejam restaurados corretamente quando o daemon for reiniciado. Se isso acontecer, você precisará interromper manualmente todos os contêineres afetados e substituí-los por novos. Essa situação também pode surgir se o seu sistema operacional atribuir uma configuração de rede diferente após uma reinicialização.

O Live Restore deve ser usado durante atualizações do Docker e interrupções não planejadas do daemon. Se você precisar editar as configurações do daemon, tente planejar o tempo de inatividade. Você também pode usar o docker systemctl reload para recarregar os arquivos de configuração sem reiniciar completamente o daemon.

Ainda não há Live Restore para contêineres baseados no Windows. Você pode usar o Live Restore no Windows com contêineres baseados em Linux. É integrado ao Docker Desktop e é habilitado em Preferências > Daemon > Avançado.

Conclusão

O Live Restore permite minimizar o tempo de inatividade perturbador, mantendo os contêineres em execução na ausência do daemon do Docker. Se você precisar instalar uma atualização urgente do Docker ou se deparar com uma falha inesperada, suas cargas de trabalho devem permanecer operacionais enquanto o daemon é reiniciado.

Publicidade

A ativação do Live Restore é uma etapa de prática recomendada ao executar o Docker na produção. As ferramentas de análise de configuração podem sinalizar instalações que não estão ativadas.

Além de usar o Live Restore, você deve garantir que seus contêineres também tenham políticas de reinicialização apropriadas. Usar reiniciar: sempre fará com que os containers individuais voltem após a reinicialização do sistema operacional ou qualquer outro daemon iniciado onde o Live Restore não possa ser usado.

Nenhum comentário