Docker Engine ve Docker Container'ın çalışıp çalışmadığını nasıl kontrol edebilirim?


103

Bir komut dosyasında şunları kontrol etmem gerekiyor:

a) Docker motoru çalışıyor mu?
b) Bir konteyner adı verildiğinde, bu docker konteyner çalışıyor mu?

[bu sorunun ilk üslubu belirsizdi, bazıları bunu "docker motorunu kontrol et" ve diğerleri "docker konteynerini kontrol et" olarak yorumluyordu]


5
Docker ps gibi herhangi bir docker komutu (docker -v hariç)
Glen Pierce

docker attach containerName
Mattia Dinozor

2
veya deneyin docker ps
Mattia Dinozor

2
sudo systemctl status docker
Duk

1
docker ps----- Bu komut yalnızca ÇALIŞAN kapsayıcıları gösterecektir
Suhaib

Yanıtlar:


110

Belirli bir konteyner arıyorsanız, şunları çalıştırabilirsiniz:

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

Kilitlenme döngüsünde olan ve açık olduğunu göstermekten sürekli olarak yeniden başlayan bir konteynerle ilgili sorunları önlemek için, yukarıdaki Statusalan kontrol edilerek iyileştirilebilir :

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

Dockerd'in yerel makinede çalışıp çalışmadığını ve systemd'nin kurulu olup olmadığını öğrenmek istiyorsanız, şunu çalıştırabilirsiniz:

systemctl show --property ActiveState docker

Docker'a docker infoveya ile de bağlanabilirsiniz docker versionve arka plan programı kullanılamıyorsa hata verecektir.


bir bash betiğinin docker inspect …içini nasıl koyarsınız if?
François Romain

15
if [ $(docker inspect -f '{{.State.Running}}' $container_name) = "true" ]; then echo yup; else echo nope; fi
BMitch

2
docker inspect -f '{{.State.Restarting}}' $container_nameKonteynırımı bir yeniden başlatma politikasıyla başlattığım için kullanıyorum , ancak burada "doğru" olmaktan kaçınmak istediğiniz şeydir.
stav meir

4
Hem bash hem de docker if, konteyner çalışmadığında yukarıdaki ifadeden şikayet edecektir . Bu, yanlış durum için istenmeyen kusmayı gizler: if [ "$(docker inspect -f '{{.State.Running}}' ${container_name} 2>/dev/null)" = "true" ]; then echo yup; else echo nope; fi
Trevor

1
@MarcoLackovic, yukarıdaki "sisteminizi yüklediniz" bölümünü kaçırmışsınız gibi görünüyor.
BMitch

48

Kullandım

docker info

docker motorunun çalışıp çalışmadığını bir bash betiğiyle kontrol etmek için.


6
Bu cevap küçümseniyor. Çapraz platformdur ve hızla geçer / başarısız olur.
Andy Fleming

2
docker info > /dev/null 2>&1çıktıya ihtiyacınız yoksa
buggymcbugfix

23

docker durumunu aşağıdakileri kullanarak kontrol edebilirsiniz: systemctl is-active docker

➜  ~  systemctl is-active docker
active

şu şekilde kullanabilirsiniz:

➜  ~  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 *

Bu soruya cevap vermiyor. "kapsayıcı adını kontrol etmek için"
jens.klose

evet, soru belirsiz görünüyor, konteynırın çalışıp çalışmadığını kontrol etmek için kullanmalısınız docker ps --filter name=pattern, o zaman çıktıyı sadece bu bayrağı ekleyerek durumu kontrol etmek için biçimlendirebilirsiniz:--format {{.Status}}
Hernan Garcia

16

Tüm kapsayıcıları listeleyin:

docker container ls -a

ls= liste
-a= tümü

"Durum" sütununu kontrol edin


1
İhtiyacım olan buydu çünkü her platformda çalışıyor !!
Rolljee

kolay ve basit ... ÇALIŞTI.
RMati

15

OS X kullanıcıları için (Mojave 10.14.3)

İşte Docker'ın çalışıp çalışmadığını test etmek için Bash komut dosyamda kullandığım şey

# 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


12

Docker çalışıyorsa docker -vgibi herhangi bir docker komutu (hariç ), docker psbazı geçerli yanıtlar alırsınız, aksi takdirde "Docker arka plan programınız çalışıyor mu?" Mesajını alırsınız.

Görev yöneticinizi de kontrol edebilirsiniz.


10

Bazen kapsayıcı adını tam olarak bilmiyorsunuz, bu durumda benim için işe yarayan şey buydu:

if docker ps | grep -q keyword
then 
    echo "Running!"
else
    echo "Not running!"
    exit 1
fi

Çalışan tüm kapsayıcı işlemlerini listeleriz ( docker ps -abize çalışmayanları da gösterirdi, ancak ihtiyacım olan bu değildi), belirli bir sözcüğü ( grepkısmı) ararız ve adında bizim anahtar kelime.



5

Bu komutla kontrol edebilirsiniz systemctl status docker, docker durumunu gösterecektir. Başlamak istiyorsanız systemctl start dockeryerine kullanabilirsiniz , sırasıyla ve systemctlile de deneyebilirsiniz .serviceservice docker statusservice docker start


5
Bu yanıt, son kullanıcının systemdbaşlangıç ​​olarak kullandığını varsayar .
Rafael

systemctl status dockerdocker servisi çalışıyor mu? Teşekkür ederim.
imsrgadich

4

Ayrıca, belirli bir docker container'ın çalışıp çalışmadığını veya aşağıdaki komutu kullanıp kullanmadığını da kontrol edebilirsiniz:

docker inspect postgres | grep "Running"

Bu komut, örneğin postgres kapsayıcımın çalışıp çalışmadığını kontrol edecek ve çıktıyı "Çalışıyor" olarak döndürecektir : true

Bu yardımcı olur umarım.


Tam olarak aradığım buydu. Ve çalışıyor. (Bir şeyi reddeden insanlar neden
diyorsa

Ben "Hata: Böyle bir nesne: postgres" aşağı oy etmedi ama
ged

3

Çalıştırmak:

docker version

Docker çalışıyorsa şunu göreceksiniz:

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

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

Docker çalışmıyorsa şunu göreceksiniz:

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

Error response from daemon: Bad response from Docker engine


1

Mac'te şu resmi görebilirsiniz:

görüntü açıklamasını buraya girin

docker simgesine sağ tıklarsanız şunu görürsünüz:

görüntü açıklamasını buraya girin

alternatif olarak:

docker ps

ve

docker run hello-world


1

docker ps -a

Canlı veya ölü olsun, tüm liman konteynerlerini görebilirsiniz.


1

Bu komutu terminalde çalıştırın:

docker ps

Docker çalışmıyorsa, şu mesajı alacaksınız:

Arka plan programından hata yanıtı: unix docker.raw.sock'u çevirin: bağlan: bağlantı reddedildi


0

SSH.Run'da nasıl kontrol ederim:

systemctl

Yanıt ise: D-Bus bağlantısı alınamadı: İşleme izin verilmiyor

Bir liman işçisi veya WSL kapsayıcısı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.