Como verificar se o docker está funcionando ou não
96
Eu sou novo no docker. Estou escrevendo um script simples para docker. Preciso verificar se o docker está funcionando ou não. Existe um comando para verificar o nome do contêiner
Para evitar problemas com um contêiner que está em um loop de falha e reiniciando constantemente para não mostrar que está ativo, o item acima pode ser melhorado marcando o Statuscampo:
como você colocaria docker inspect …dentro de uma ifinstrução de um script bash?
François Romain
15
if [ $(docker inspect -f '{{.State.Running}}' $container_name) = "true" ]; then echo yup; else echo nope; fi
BMitch
2
Eu uso docker inspect -f '{{.State.Restarting}}' $container_namedesde que iniciei meu contêiner com uma política de reinicialização, embora aqui "verdadeiro" seja o que você deseja evitar.
stav meir
4
Tanto o bash quanto o docker reclamarão da ifinstrução acima , quando o contêiner não estiver em execução. Isso esconde o vômito indesejado para o caso falso: if [ "$(docker inspect -f '{{.State.Running}}' ${container_name} 2>/dev/null)" = "true" ]; then echo yup; else echo nope; fi
Trevor
1
@MarcoLackovic parece que você perdeu a parte "você instalou o systemd" acima.
BMitch
43
Acabei usando
docker info
para verificar com um script bash se o mecanismo do docker está em execução.
Isso não responde à pergunta. "para verificar o nome do contêiner"
jens.klose
sim, parece que a questão é ambígua, para verificar se o contêiner está em execução, você deve usar docker ps --filter name=pattern, então você pode formatar a saída para verificar apenas o status adicionando este sinalizador:--format {{.Status}}
Qualquer comando docker (exceto docker -v), comodocker ps
If Docker is running, você obterá alguma resposta válida, caso contrário, você receberá uma mensagem que inclui "O daemon do docker está instalado e funcionando?"
Você também pode verificar seu gerenciador de tarefas.
Às vezes você não sabe o nome completo do contêiner, neste caso, isto funcionou para mim:
if docker ps | grep -q keyword
then
echo "Running!"else
echo "Not running!"
exit 1fi
Listamos todos os processos de contêiner em execução ( docker ps -anos mostraria também aqueles que não estão em execução, mas não é o que eu precisava), procuramos uma palavra específica ( grepparte) e simplesmente falhamos se não encontrarmos pelo menos um contêiner em execução cujo nome contenha nosso palavra-chave.
Você pode verificar com este comando, systemctl status dockerele mostrará o status da janela de encaixe. Se você quiser começar, pode usar em systemctl start dockervez de, systemctltambém pode tentar com service, service docker statuse service docker startrespectivamente.
Isso é exatamente o que eu estava procurando. E funciona. (É bom quando as pessoas que votam em algo dizem o porquê, para que os novatos possam aprender a etiqueta SO melhor. :))
allenjom
Eu não votei contra, mas "Erro: Não existe tal objeto: postgres"
docker attach containerName
docker ps
docker ps
----- Este comando mostrará apenas contêineres emRespostas:
Se você estiver procurando por um contêiner específico, pode executar:
Para evitar problemas com um contêiner que está em um loop de falha e reiniciando constantemente para não mostrar que está ativo, o item acima pode ser melhorado marcando o
Status
campo:Se você quiser saber se o dockerd está sendo executado na máquina local e se o systemd está instalado, execute:
Você também pode se conectar ao docker com
docker info
oudocker version
e eles apresentarão um erro se o daemon não estiver disponível.fonte
docker inspect …
dentro de umaif
instrução de um script bash?if [ $(docker inspect -f '{{.State.Running}}' $container_name) = "true" ]; then echo yup; else echo nope; fi
docker inspect -f '{{.State.Restarting}}' $container_name
desde que iniciei meu contêiner com uma política de reinicialização, embora aqui "verdadeiro" seja o que você deseja evitar.if
instrução acima , quando o contêiner não estiver em execução. Isso esconde o vômito indesejado para o caso falso:if [ "$(docker inspect -f '{{.State.Running}}' ${container_name} 2>/dev/null)" = "true" ]; then echo yup; else echo nope; fi
Acabei usando
para verificar com um script bash se o mecanismo do docker está em execução.
fonte
docker info > /dev/null 2>&1
se você não precisa da saídavocê pode verificar o estado do docker usando:
systemctl is-active docker
você pode usá-lo como:
fonte
docker ps --filter name=pattern
, então você pode formatar a saída para verificar apenas o status adicionando este sinalizador:--format {{.Status}}
Liste todos os contêineres:
docker container ls -a
ls
= lista-a
= allVerifique a coluna "status"
fonte
Para usuários do OS X (Mojave 10.14.3)
Aqui está o que eu uso no meu script Bash para testar se o Docker está sendo executado ou não
fonte
if [[ $? -ne 0 ]]
antipadrão.Qualquer comando docker (exceto
docker -v
), comodocker ps
If Docker is running, você obterá alguma resposta válida, caso contrário, você receberá uma mensagem que inclui "O daemon do docker está instalado e funcionando?"Você também pode verificar seu gerenciador de tarefas.
fonte
Às vezes você não sabe o nome completo do contêiner, neste caso, isto funcionou para mim:
Listamos todos os processos de contêiner em execução (
docker ps -a
nos mostraria também aqueles que não estão em execução, mas não é o que eu precisava), procuramos uma palavra específica (grep
parte) e simplesmente falhamos se não encontrarmos pelo menos um contêiner em execução cujo nome contenha nosso palavra-chave.fonte
Você pode verificar com este comando,
systemctl status docker
ele mostrará o status da janela de encaixe. Se você quiser começar, pode usar emsystemctl start docker
vez de,systemctl
também pode tentar comservice
,service docker status
eservice docker start
respectivamente.fonte
systemd
como init.systemctl status docker
mostrar corretamente se o serviço docker está em execução. Obrigado.Você também pode verificar se um determinado contêiner do docker está em execução ou não usando o seguinte comando:
Este comando irá verificar se, por exemplo, meu contêiner postgres está rodando ou não e irá retornar a saída como "Running": true
Espero que isto ajude.
fonte
Corre:
Se o docker estiver em execução, você verá:
Se o docker não estiver em execução, você verá:
fonte
Se o objetivo subjacente for "Como posso iniciar um contêiner quando o Docker é iniciado?"
Podemos usar Docker política de reinicialização
Para adicionar uma política de reinicialização a um contêiner existente:
Docker: adicione uma política de reinicialização a um contêiner que já foi criado
Exemplo:
fonte
em um Mac, você pode ver a imagem:
se você clicar com o botão direito no ícone do docker, verá:
alternativamente:
docker ps
e
docker run hello-world
fonte
Como faço o check-in SSH.Run:
Se a resposta: Falha ao obter a conexão D-Bus: Operação não permitida
É um docker ou contêiner WSL.
fonte
docker ps -a
Você pode ver todos os contêineres do docker, estejam eles vivos ou mortos.
fonte