Oprava: Nelze se připojit k Docker Daemon



Vyzkoušejte Náš Nástroj Pro Odstranění Problémů

Možná budete velmi zmatení, pokud na vás terminál Linux hodí chybu „nelze se připojit k démonovi Dockera“, protože je více než pravděpodobné, že démon Dockeru již běží, když to uvidíte. I když se budete chtít ujistit, že tomu tak je, budete pravděpodobně zmateni, když zjistíte, že tato chyba nemusí mít co do činění se spuštěnou službou. Většinou se hodí na uživatele, kteří se nepřidali do skupiny Docker.



Docker vydá samostatnou skupinu uživatelů v systémech Linux a ti, kteří mají uživatelské účty, které do ní nejsou přidány, se k ní nebudou moci připojit. Mějte na paměti, že přidání uživatelského účtu do skupiny Docker je funkčně ekvivalentní root, protože démon běží vždy jako uživatel root. To by se dalo očekávat u systému Ubuntu Server pro jednoho uživatele, ale pro ty, kteří používají Docker na Archu, Fedoře nebo Debianu, určitě bude mít na paměti.



Metoda 1: Kontrola stavu služby Docker

I když to téměř jistě je, budete muset zkontrolovat, zda je služba Docker aktuálně spuštěna. V okně terminálu spusťte systemctl status docker.service jako normální uživatel. Měli byste získat nějaké informace o tom, které PID číslo bylo přiřazeno démonovi Dockera. Pokud tak neučiníte, budete muset službu restartovat.



Pokud jste jej restartovali, zkuste udělat cokoli, co vám způsobilo chybu „nelze se připojit k démonovi Dockera“. Pokud to nyní funguje, pak jste službu neměli spuštěnou a nemusíte se starat o nic jiného kromě toho, že neběžela. Ve většině případů to bohužel nefunguje, takže v těchto situacích budete muset jít dál.

Metoda 2: Přidání uživatelů do skupiny Docker

Běh docker informace z příkazového řádku, který vám obvykle znovu zobrazí chybu „nelze se připojit k démonovi Dockera“.

Pokud je to váš případ, budete muset běžet sudo groupadd docker; sudo usermod -aG docker $ USER přidat se do správné skupiny. Pokud by došlo k chybě, protože nemáte usermod, můžete upravit příkaz tak, aby běžel jako sudo groupadd docker; sudo gpasswd - ukotvitelný panel $ USER , ale to by obecně neměl být problém, protože většina komerčních linuxových distribucí pracuje se stejnou sadou nástrojů. V každém případě spusťte ukotvitelný panel newgrp takže se můžete přihlásit do nové skupiny přístavních děl, pokud ještě nejste.



Mějte na paměti, že to vždy přidá uživatele, pod kterým jste aktuálně přihlášeni, což by ve většině systémů lidí, kteří nemají více účtů než jeden uživatel a účet root, neměl být velkým problémem. Protože máte prozatím zadaný přístup pro správu, spusťte sudo chgrp docker / usr / bin docker; sudo chgrp docker /var/run/docker.sock opravit oprávnění na dokovací stanici a příkazu. Soubor soketu obvykle patří pouze uživateli root, což to opraví.

Po spuštění byste neměli mít žádné potíže, protože nyní patří do stejné skupiny, kterou jste vytvořili v předchozím příkazu. Budete však chtít otestovat, zda docker běží bez sudo, takže zadejte docker run hello-world jako běžný uživatel, abyste se ujistili, že se vám nebudou zobrazovat žádné další chyby.

V tomto okamžiku bude jen velmi málo uživatelů stále dostávat jakékoli chybové zprávy. Většina věcí by měla být v tomto okamžiku opravena, ale pokud máte stále problémy, můžete se úplně odhlásit. Zkuste otevřít jiné okno emulátoru terminálu, ale pokud to nefunguje, někdy to pomůže přerušení systému pro úplné restartování, pokud je to vůbec možné

Metoda 3: Použití seznamů ACL k úpravě metadat Dockeru

Pokud nechcete patřit do skupiny, díky které se vám líbí uživatel root, můžete nastavit soubor soketu tak, aby fungoval pouze s určitými oprávněními. Proces gpasswd můžete ignorovat, pokud to chcete udělat tímto způsobem. Prohledávání systému souborů kvůli různým položkám ACL, které zatěžují osoby provádějící audit zabezpečení, ale brání vám v tom, abyste museli úplně používat skupinu ukotvitelných panelů.

Pokud to chcete udělat tímto způsobem, můžete spustit sudo setfacl -m uživatel: jméno: rw /var/run/docker.sock při nahrazení uživatele a jména příslušnými štítky. Tím se uděluje oprávnění pro přístup k zásuvce Docker na adrese /var/run/docker.sock, která by měla fungovat se systémy Debian a Ubuntu Server.

3 minuty čtení