Odmowa dostępu podczas uruchamiania Dockera po zainstalowaniu go jako Snap

33

Zainstalowałem Dockera za pośrednictwem sklepu oprogramowania, co wskazało, że był to pakiet Snap. Wydaje mi się, że to w porządku, ale niestety każde polecenie, które wypróbowałem, nie działa:

$ docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/info: dial unix /var/run/docker.sock: connect: permission denied

Jakiś pomysł jak to naprawić?

Edycja: Na razie pracowałem nad tym, instalując Docker z własnych repozytoriów Dockera , co może działać również dla osób przeglądających to pytanie w przyszłości. Pozostawiam pytanie otwarte dla tych, którzy chcą mieć możliwość uruchomienia go z Snap.

Vincent
źródło
Zainstalowano dokera z oficjalnych repozytoriów dokera. Docker już działał, gdy dodałem mojego użytkownika do dockergrupy, id -nGnie pokazywał dokera i żadne dockerpolecenie spowodowało błąd odmowy uprawnień. Wylogowanie i ponowne zalogowanie nie działało, ponieważ proces systemu dokera nadal działa. Ponowne uruchomienie systemu lub ponowne uruchomienie dokera pokazało użytkownika jako część grupy dokerów i umożliwiło wykonywanie poleceń dokera. UWAGA: 0 powtórzeń, nie można dodać komentarza.
Santosh Patel

Odpowiedzi:

33

To jest ze strony GitHub, czy wypróbowałeś dokładnie te kroki:

If you are using Ubuntu Core 16,

Connect the docker:home plug as it's not auto-connected by default:

$ sudo snap connect docker:home

If you are using an alternative snap-compatible Linux distribution ("classic" in snap lingo), and would like to run docker as a normal user:

Create and join the docker group.

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker

You will also need to disable and re-enable the docker snap if you added the group while it was running.

$ sudo snap disable docker
$ sudo snap enable docker

Od Dockera przystawki github

Mike Coleman
źródło
Nie widziałem tej strony, więc dziękuję za link. To powiedziawszy, ponieważ ponieważ nie używam Ubuntu Core, musiałbym postępować zgodnie z addgroupinstrukcjami, które moim zdaniem dotyczą tego, co zrobiłem, zgodnie z innymi odpowiedziami. Niestety wolałbym nie dotykać już działającego systemu, ale chciałbym go usłyszeć, jeśli ktoś inny spróbuje tego i uda mu się go uruchomić.
Vincent
2
wyłączanie / włączanie przystawek dokerów załatwiło sprawę, dzięki
Manish Kumar,
1
Dotyczy to także Ubuntu (Desktop) 19.04.
Nick Breen
31

Komunikat o błędzie informuje, że bieżący użytkownik nie może uzyskać dostępu do silnika dokera, ponieważ nie masz uprawnień dostępu do gniazda unix w celu komunikacji z silnikiem.

Rozwiązanie tymczasowe

Użyj sudopolecenia, aby za każdym razem wykonywać polecenia z podwyższonymi uprawnieniami.

Stałe (sugerowane) rozwiązanie

Dodaj bieżącego użytkownika do dockergrupy. Można to osiągnąć przez pisanie

sudo usermod -a -G docker $USER

Musisz się wylogować i zalogować ponownie, aby członkostwo w grupie zaczęło obowiązywać.

Źródło: techoverflow.net

ADDB
źródło
1
Najwyraźniej twój Google-fu jest lepszy niż mój. Niestety to nie działa. Przede wszystkim dockergrupa nie istniała. Najpierw pobiegłem, sudo addgroup dockera następnie zmieniłem polecenie, a następnie wylogowałem się i zalogowałem ponownie. Niestety błąd wskazany w pytaniu nadal występuje ...
Vincent
2
@Vincent, że nie zapomniałeś, zmiany w grupie nie następują natychmiast, prawda? Spróbuj newgrp dockerlub
wyloguj
Nie, przepraszam, zapomniałem wspomnieć, że - zaktualizowałem swój komentarz, gdy odpowiedziałeś :) Bieganie groups vincentdaje:vincent adm cdrom sudo dip plugdev lpadmin sambashare docker
Vincent
@Vincent tylko w celach informacyjnych, uruchomiono demona dokera, prawda? Spróbuj sudo /etc/init.d/docker statuslub sudo service docker statusprzetestuj to.
ADDB
Hmm, nie sądzę, aby działały, ponieważ jest to Snap: paste.ubuntu.com/25219172 To powiedziawszy, ps cax | grep dockerddaje 31034 ? Ssl 0:05 dockerd.
Vincent
6

Zakładam, że twoja nazwa użytkownika jest już w grupie dokerów. Aby to sprawdzić, wydaj poniższe polecenie.

id -nG

Jeśli nie, musisz dodać użytkownika do grupy dokerów, wykonując poniższe polecenie.

sudo groupadd docker
sudo usermod -aG docker $USER

Wykonanie polecenia sudo systemctl start dockerpowoduje utworzenie procesu dokowania. Ten proces dokera zawiera dockerdwątek demona. Polecenie tworzy również domyślne docker.sockgniazdo Unix. docker.sockGniazdo ciągły słuchały dockerddemon wątku. Dzięki temu można wykonywać docker.pidproces IPC na poziomie jądra . Aby móc korzystać z tego gniazda dokowania, musisz mieć odpowiednie uprawnienia z poziomu procesu ( docker.pid) i poziomu pliku ( docker.sock). Wykonanie poniżej dwóch poleceń powinno rozwiązać Twój problem. sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission sudo chmod a+rwx /var/run/docker.pid

Uddhav Gautam
źródło
Tylko to działa na Ubuntu 18.04. Wielkie dzięki Uddhav Gautam
Sabbir
3
sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

nie wymaga ponownego uruchomienia i jest bezpieczniejszy

Nahshon paz
źródło
1

Powinieneś dodać użytkownika do grupy Docker ( zobacz oficjalne dokumenty ).

Możesz dodać sudoprzed poleceniem lub dodać użytkownika do dockergrupy, używając tego polecenia:

sudo usermod -aG docker <USER>

Wyloguj się i zaloguj ponownie, aby ponownie ocenić członkostwo w grupie.

Heesen Ponnusawmy
źródło
Ponieważ treść pod tym linkiem może zniknąć, dodaj odpowiednie szczegóły tutaj.
Chai T. Rex,
Nie ma potrzeby, w innej odpowiedzi wspomniano już o dodawaniu użytkownika do grupy - to nie pomogło. (Również nie ma powodu, dla którego pomogłoby to w instalacji Snap, ale nie w przypadku zwykłej instalacji.)
Vincent