Poprawka: nie można połączyć się z demonem platformy Docker



Wypróbuj Nasz Instrument Do Eliminowania Problemów

Możesz być bardzo zdezorientowany, jeśli terminal Linuksa wyświetla na ciebie błąd „nie można połączyć się z demonem Dockera”, ponieważ najprawdopodobniej demon Docker już działa, gdy to zobaczysz. Chociaż chcesz się upewnić, że tak jest, prawdopodobnie będziesz zdziwiony, gdy dowiesz się, że ten błąd nie ma nawet związku z tym, że usługa nie jest uruchomiona. Najczęściej jest rzucany na użytkowników, którzy nie dodali się do grupy Docker.



Docker tworzy oddzielną grupę użytkowników w systemach Linux, a ci, którzy mają konta użytkowników, które nie zostały do ​​niej dodane, nie będą mogli się z nią połączyć. Należy pamiętać, że dodanie konta użytkownika do grupy Docker jest funkcjonalnym odpowiednikiem roota, ponieważ demon zawsze działa jako użytkownik root. Można się tego spodziewać w systemie Ubuntu Server dla jednego użytkownika, ale z pewnością będzie to coś, o czym należy pamiętać dla osób korzystających z Dockera w Arch, Fedorze lub Debianie.



Metoda 1: Sprawdzanie stanu usługi platformy Docker

Chociaż prawie na pewno tak jest, musisz sprawdzić, czy usługa Docker jest obecnie uruchomiona. W oknie terminala uruchom status systemctl docker.service jako zwykły użytkownik. Powinieneś uzyskać informacje o tym, który numer PID został przypisany demonowi Dockera. Jeśli tego nie zrobisz, musisz ponownie uruchomić usługę.



Jeśli uruchomiłeś go ponownie, spróbuj zrobić to, co spowodowało błąd „nie można połączyć się z demonem Dockera”. Jeśli teraz działa, oznacza to, że po prostu nie masz uruchomionej usługi i nie musisz się martwić o nic innego poza powodem, dla którego nie była uruchomiona. Niestety w większości przypadków to nie działa, więc w takich sytuacjach musisz przejść dalej.

Metoda 2: dodawanie użytkowników do grupy platformy Docker

Biegać informacje docker z wiersza poleceń, co zwykle powoduje ponowne wyświetlenie błędu „nie można połączyć się z demonem Dockera”.

Jeśli tak jest, musisz biec sudo groupadd docker; sudo usermod -aG docker $ USER aby dodać się do odpowiedniej grupy. Jeśli spowoduje to błąd, ponieważ nie masz usermod, możesz zmodyfikować polecenie, aby działało jako sudo groupadd docker; sudo gpasswd -a $ USER docker , ale generalnie nie powinno to stanowić problemu, ponieważ większość komercyjnych dystrybucji Linuksa działa z tym samym zestawem narzędzi. W każdym razie biegnij newgrp docker więc możesz zalogować się do nowej grupy Docker, jeśli jeszcze tego nie zrobiłeś.



Pamiętaj, że zawsze doda to użytkownika, jako którego jesteś aktualnie zalogowany, co nie powinno stanowić większego problemu w systemach większości ludzi, którzy nie mają wielu kont poza jednym użytkownikiem i kontem root. Ponieważ na razie masz wpisany dostęp administracyjny, uruchom sudo chgrp docker / usr / bin docker; sudo chgrp docker /var/run/docker.sock naprawić uprawnienia w gnieździe i poleceniu Dockera. Zwykle plik gniazda należy tylko do użytkownika root, więc to naprawi ten problem.

Po uruchomieniu nie powinieneś mieć żadnych problemów, ponieważ należy on teraz do tej samej grupy, którą utworzyłeś w poprzednim poleceniu. Będziesz chciał jednak przetestować, aby upewnić się, że docker działa bez sudo, więc wpisz docker run hello-world jako zwykły użytkownik, aby mieć pewność, że nie otrzymujesz żadnych innych błędów.

W tym momencie bardzo niewielu użytkowników nadal otrzyma jakiekolwiek komunikaty o błędach. Większość rzeczy powinna zostać poprawiona na tym etapie, ale jeśli nadal masz problemy, możesz się wylogować. Spróbuj otworzyć inne okno emulatora terminala, ale jeśli to nie zadziała, czasami pomaga wyłączenie systemu w celu całkowitego ponownego uruchomienia, o ile jest to w ogóle możliwe

Metoda 3: Używanie list ACL do modyfikowania metadanych platformy Docker

Jeśli nie chcesz należeć do grupy, która sprawia, że ​​lubisz użytkownika root, możesz ustawić plik gniazda tak, aby działał tylko z określonymi uprawnieniami. Możesz zignorować proces gpasswd, jeśli wolisz to zrobić w ten sposób. Konieczność skanowania systemu plików w poszukiwaniu różnych wpisów ACL stanowi obciążenie dla osób przeprowadzających audyt bezpieczeństwa, ale zapobiega konieczności całkowitego korzystania z grupy docker.

Jeśli chcesz to zrobić w ten sposób, możesz biec sudo setfacl -m użytkownik: nazwa: rw /var/run/docker.sock zastępując użytkownika i nazwę odpowiednimi etykietami. To daje pozwolenie na dostęp do gniazda Docker pod adresem /var/run/docker.sock, co powinno działać z Debianem i Ubuntu Server.

3 minuty czytania