quais imagens o dockerd inicia automaticamente?

quais imagens o dockerd inicia automaticamente?

Depois de reiniciar o serviço docker na caixa do Ubuntu, service docker restartele iniciou alguns dos contêineres que eu não esperava que iniciasse.

Por que é que? Qual arquivo de configuração/armazenamento/qualquer informação contida sobre quais imagens devem ser iniciadas?

Eu tenho muitas imagens (~50) ao listá-las com docker images. Mas apenas 8 deles iniciam quando eu inicio o dockerd. Por que? Como faço para mudar isso?

Obrigado.

Responder1

Para contêineres individuais, há uma política de reinicialização que você pode aplicar. Isso é definido docker run --restart=...ao iniciar o contêiner ou em uma restart: ...linha no arquivo yml de composição. Você pode alterar a política de reinicialização em um contêiner existente com:

$ docker update --restart=... ${container_name_or_id}

Para listar todos os contêineres e suas políticas de reinicialização, você pode executar isto no bash:

$ docker container ls -q | \
  xargs docker container inspect --format \
          '{{ .Name }}: {{.HostConfig.RestartPolicy.Name}}'

Opolíticas de reinicializaçãovocê pode usar são:

não Não reinicie automaticamente o contêiner quando ele sair. Este é o padrão.

em caso de falha[:max-retries] Reinicie somente se o contêiner sair com um status de saída diferente de zero. Opcionalmente, limite o número de tentativas de reinicialização das tentativas do daemon do Docker.

sempre Sempre reinicie o contêiner, independentemente do status de saída. Quando você especifica sempre, o daemon do Docker tentará reiniciar o contêiner indefinidamente. O contêiner também sempre iniciará na inicialização do daemon, independentemente do estado atual do contêiner.

a menos que seja parado Sempre reinicie o contêiner, independentemente do status de saída, mas não o inicie na inicialização do daemon se o contêiner já tiver sido colocado em um estado parado antes.

Uma política de reinicialização alwaysresultaria em uma reinicialização inesperada do contêiner após a reinicialização do daemon do docker, como você está vendo, mesmo se você tivesse interrompido intencionalmente o contêiner. Por esse motivo, normalmente crio contêineres independentes com uma unless-stoppedpolítica de reinicialização.


Se você estiver usando o modo docker swarm, os serviços iniciarão automaticamente um novo contêiner sempre que o estado de destino não corresponder ao estado atual. Para um cluster de enxame de nó único frequentemente visto em laptops, isso significa que o contêiner será reiniciado quando você reiniciar o docker, mas também se você simplesmente parar ou excluir o contêiner em execução.

Parar e remover permanentemente um serviço:

$ docker service ls # to show the running services
$ docker service rm ${service_id_or_name}

Se um serviço estiver configurado com modo replicado e você simplesmente quiser interrompê-lo temporariamente sem excluir o serviço, poderá atualizar as réplicas de destino para 0:

$ docker service update --replicas=0 ${service_id_or_name}

E os serviços podem ser implantados como parte de uma pilha. Para remover a pilha inteira:

$ docker stack ls # to show the defined stacks
$ docker stack rm ${stack_id_or_name}

Responder2

Isso significa que alguns de seus contêineres têm RestartPolicy definido como sempre. Isso significa que o contêiner deve estar sempre ativo. Inspecione esses contêineres em questão, verificando especificamente o valor de RestartPolicy.

$ docker inspect container-name

Isso geralmente acontece quando um contêiner foi criado com um sinalizador --restartsempre

Para desativar a inicialização automática do contêiner, use o comando:

$ docker update --restart=no container-name

Outra maneira de contornar isso é definir RestartPolicy como a menos que seja interrompido ao iniciar o contêiner. Você pode ler a documentação completa deatualização da janela de encaixe

Responder3

Analise a política de reinicialização do docker, como --restart always. Suponho que alguns de seus contêineres estejam usando isso. Verifique o script de inicialização do serviço para docker. Você pode usar docker ps -a --no-truncpara ver a lista completa.

Responder4

As imagens não iniciam automaticamente, mas os contêineres.

Em service docker restartcontêineres ondeparououiniciadocom --restart alwaysflag será reiniciado automaticamente na reinicialização. Verifique isso através de docker ps -a.

Se você não deseja que um contêiner seja iniciado (mesmo que tenha --restart alwayssinalizador), basta removê-lo docker rm containerou docker-compose down.

informação relacionada