Docker používá architekturu založenou na démonech, kde se CLI připojuje k dlouhodobému procesu běžícímu samostatně na vašem počítači nebo vzdáleném hostiteli. Příkazy CLI nebudou fungovat a vaše kontejnery obvykle přejdou do režimu offline, pokud se démon zastaví.
Zde je návod, jak zkontrolovat, zda je spuštěn démon Docker, abyste mohli diagnostikovat problémy s kontejnery a docker
příkaz. Když démon neběží, při každém použití docker
se zobrazí zpráva „nelze se připojit k démonu Docker“ CLI.
Kontrola pomocí Systemctl
Stav Dockeru můžete zkontrolovat pomocí systemctl
na distribucích, které používají Systemd pro správu služeb. To pokrývá většinu oblíbených operačních systémů včetně Debian, Ubuntu, CentOS a Red Hat.
sudo systemctl status docker
Zkontrolujte, co se zobrazuje pod „Aktivní“. Pokud vidíte active (running)
zeleně, démon Docker běží a vaše kontejnery by měly být spuštěny.
Aktivní stav inactive
označuje, že služba byla zastavena. Zkuste to vyvolat spuštěním sudo systemctl start docker
. Stav by se měl změnit na active (running)
po spuštění démona.
Pokud vidíte stav failed
červeně, démon se nemohl spustit kvůli chybě. Měli byste si prohlédnout spouštěcí protokoly služby zobrazené později v systemctl
výstup příkazu, protože tyto obvykle obsahují rady, které vám umožní zjistit, co se pokazilo.
Pokud není k dispozici žádné zřejmé rozlišení, spusťte démona ručně v režimu ladění, abyste získali více informací o jeho spouštěcí rutině.
sudo dockerd --debug
Restartování hostitelského počítače nebo restartování služby Docker pomocí systemctl restart docker
může také pomoci zmírnit přechodné problémy.
Kontrola podrobností procesu
Dalším způsobem, jak zkontrolovat běžícího démona Docker, je kontrola jeho souboru ID procesu. Démon zapíše své ID procesu do /var/run/docker.pid
pokaždé, když se spustí. Když tento soubor existuje, Docker by měl být spuštěný a připravený pro připojení CLI.
cat /var/run/docker.pid
Tuto techniku můžete použít k vytvoření programových skriptů, které kontrolují, zda je démon naživu. Čtením souboru získáte ID, které můžete použít s nástroji jako top
Chcete-li získat další informace o procesu Docker:
cat /var/run/docker.pid # process id = 1000 top -p 1000
ID procesu můžete také získat pomocí pidof
příkaz. To přijme název procesu a vrátí první odpovídající ID:
pidof dockerd # process id = 1000 # view information with top top -p `pidof dockerd`
Pokud je top
, na vašem počítači je aktivní démon Docker odpovídá dockerd
proces. To může být spolehlivější než hledání docker.pid
– pokud se démon zhroutí, docker.pid
může zůstat po skončení procesu.
Zpracování zaseknutých procesních souborů
Démon se odmítne restartovat, když je přítomen soubor PID. To by vás mohlo uvíznout ve smyčce restartu, pokud je soubor skutečně osiřelý po předchozím spuštění. Tato zpráva se zobrazí při spuštění dockerd
:
failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid
Použijte pidof dockerd
abyste se ujistili, že se Docker skutečně zastavil. Pokračujte, pokud příkaz nevydává žádný výstup, což potvrzuje, že neprobíhá žádný proces.
Spusťte sudo rm /var/run/docker.pid
k odstranění starého souboru ID procesu. Démon by se nyní měl úspěšně spustit při příštím spuštění dockerd
nebo service docker start
.
Problémy se soubory PID se běžně vyskytují, když pořídíte snímek virtuálního počítače a poté z bitové kopie vytvoříte novou instanci. Soubor procesu bude zahrnut do snímku, což způsobí, že démon Docker v novém virtuálním počítači si bude myslet, že již běží.
Kontrola jednotlivých kontejnerů
Ke stavu jednotlivých kontejnerů se přistupuje přes docker ps
příkaz. Tím se vygeneruje tabulka obsahující podrobnosti o všech aktuálně spuštěných kontejnerech.
docker ps
Zkombinujte docker ps
příkaz s grep
pro snadnou kontrolu, zda je konkrétní kontejner spuštěn podle ID nebo názvu:
docker ps | grep my-container-name
Nyní bude výstup filtrován, aby se zobrazil kontejner, který jste vybrali. Pokud kontejner neběží, nebudou žádné záznamy.
Zastavené kontejnery se zobrazují pomocí docker ps -a
. Zastavený kontejner lze spustit pomocí docker start
příkaz:
docker start my-container
Kontejner se poté přesune do běžného docker ps
výstup. Můžete jej znovu zastavit pomocí docker stop my-container
.
Závěr
Máte několik možností, které je třeba zvážit, když chcete vědět, zda je Docker spuštěn. Zde je správce služeb vašeho operačního systému, docker.pid
soubor a nástroje pro pravidelnou kontrolu procesu, jako je top
a pidof
.
Pokud jde o jednotlivé kontejnery, docker ps
poskytuje seznam všeho, co aktuálně běží na vašem hostiteli. Podrobnější informace o stavu libovolného kontejneru lze získat pomocí docker inspect container-name
který poskytuje podrobnosti o konfiguraci sítě, svazcích a štítcích ve formátu JSON.