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

user5517392
fonte
3
Qualquer comando docker (exceto docker -v), como docker ps
Glen Pierce
docker attach containerName
Mattia Dinosaur
ou tente docker ps
Mattia Dinosaur
2
sudo systemctl status docker
Duk
docker ps----- Este comando mostrará apenas contêineres em
execução

Respostas:

101

Se você estiver procurando por um contêiner específico, pode executar:

if [ "$( docker container inspect -f '{{.State.Running}}' $container_name )" == "true" ]; then ...

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:

if [ "$( docker container inspect -f '{{.State.Status}}' $container_name )" == "running" ]; then ...

Se você quiser saber se o dockerd está sendo executado na máquina local e se o systemd está instalado, execute:

systemctl show --property ActiveState docker

Você também pode se conectar ao docker com docker infoou docker versione eles apresentarão um erro se o daemon não estiver disponível.

BMitch
fonte
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.

controle aleatório
fonte
4
Esta resposta é subestimada. É multiplataforma e passa / falha rapidamente.
Andy Fleming
docker info > /dev/null 2>&1se você não precisa da saída
buggymcbugfix
22

você pode verificar o estado do docker usando: systemctl is-active docker

  ~  systemctl is-active docker
active

você pode usá-lo como:

  ~  if [ "$(systemctl is-active docker)" = "active" ]; then echo "is alive :)" ; fi
is alive :)

  ~  sudo systemctl stop docker

  ~  if [ "$(systemctl is-active docker)" = "active" ]; then echo "is alive :)" ; fi
 * empty response *
Hernan Garcia
fonte
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}}
Hernan Garcia
15

Liste todos os contêineres:

docker container ls -a

ls = lista
-a = all

Verifique a coluna "status"

Senio Caires
fonte
1
Isso é o que eu precisava, porque funciona em todas as plataformas !!
Rolljee
fácil e simples ... FUNCIONADO.
RMati
14

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

# Check if docker is running
if ! docker info >/dev/null 2>&1; then
    echo "Docker does not seem to be running, run it first and retry"
    exit 1
fi
Lapin
fonte
1
Refatorei isso para remover o if [[ $? -ne 0 ]]antipadrão.
tripleee
7

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.

Glen Pierce
fonte
7

À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 1
fi

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.

Emilia Tyl
fonte
Refatorado para remover uma enorme coleção de antipadrões de programação
tripleee
5

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.

Naanii
fonte
5
Esta resposta assume que o usuário final está usando systemdcomo init.
Rafael
systemctl status dockermostrar corretamente se o serviço docker está em execução. Obrigado.
imsrgadich
3

Você também pode verificar se um determinado contêiner do docker está em execução ou não usando o seguinte comando:

docker inspect postgres | grep "Running"

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.

Rajusekhar Alle
fonte
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"
lançado em
3

Corre:

docker version

Se o docker estiver em execução, você verá:

Client: Docker Engine - Community
 Version:           ...
 [omitted]

Server: Docker Engine - Community
 Engine:
  Version:          ...
 [omitted]

Se o docker não estiver em execução, você verá:

Client: Docker Engine - Community
 Version:           ...
 [omitted]

Error response from daemon: Bad response from Docker engine
Marco Lackovic
fonte
1

em um Mac, você pode ver a imagem:

insira a descrição da imagem aqui

se você clicar com o botão direito no ícone do docker, verá:

insira a descrição da imagem aqui

alternativamente:

docker ps

e

docker run hello-world

David Odhiambo
fonte
0

Como faço o check-in SSH.Run:

systemctl

Se a resposta: Falha ao obter a conexão D-Bus: Operação não permitida

É um docker ou contêiner WSL.

Sachin Verma
fonte
0

docker ps -a

Você pode ver todos os contêineres do docker, estejam eles vivos ou mortos.

Ykimmy
fonte