Na stronach dokumentacji Dockera wszystkie przykładowe polecenia są pokazane bez sudo
, jak na przykład:
docker ps
W Ubuntu plik binarny jest nazywany docker.io
. Nie działa również bez sudo:
sudo docker.io ps
Jak skonfigurować Docker, aby nie trzeba było poprzedzać każdego polecenia Docker poleceniem sudo?
apt-cache policy docker-engine
(adres URL powinien pochodzić z dockerproject.org)Odpowiedzi:
Dobra wiadomość: nowy doker (wersja 19.03 (obecnie w fazie eksperymentalnej)) będzie mógł uruchamiać się bez rootowania, negując problemy, które mogą wystąpić przy użyciu użytkownika root. Nigdy więcej bałaganu z podwyższonymi uprawnieniami, rootowania i wszystkiego, co może otworzyć twoją maszynę, gdy nie chcesz.
Film na ten temat z [DockerCon 2019] Hardening Docker Daemon w trybie Rootless
Od wersji dokowanej 19.3 jest to przestarzałe (i bardziej niebezpieczne niż to konieczne):
W instrukcji dokera można to powiedzieć:
Ważne do przeczytania: kroki poinstalacyjne dla systemu Linux (zawiera także szczegółowe informacje na temat powierzchni Docker Daemon Attack Surface ).
Dodaj grupę dokerów, jeśli jeszcze nie istnieje:
Dodaj podłączonego użytkownika „$ USER” do grupy dokerów. Zmień nazwę użytkownika, aby pasowała do preferowanego użytkownika, jeśli nie chcesz korzystać z bieżącego użytkownika:
Wykonaj a
newgrp docker
lub wyloguj się / zaloguj, aby aktywować zmiany w grupach.Możesz użyć
aby sprawdzić, czy możesz uruchomić dokera bez sudo.
źródło
newgrp docker
nie działało dla mnie, musiałem się wylogować.docker login
, może się okazać, że.docker
folder utworzony w folderze domowym należy doroot
. w ten sposób będzie można spotkać tego ostrzeżenia podczas uruchamiania poleceń Döcker:WARNING: Error loading config file:/home/myuser/.docker/config.json - stat /home/myuser/.docker/config.json: permission denied
. Zrobiłem autora.docker
Folder dostępny bez sudo tak:sudo chgrp -hR docker ~/.docker && sudo chown -R myuser ~/.docker
.chgrp
nie wydaje się, aby pomóc choć, więc prawdopodobnie mam tylko polecić chown krok.Aby uruchomić polecenie dokera bez
sudo
, musisz dodać użytkownika (który ma uprawnienia roota) do grupy dokerów. W tym celu uruchom następujące polecenie:Teraz wyloguj się, a następnie zaloguj ponownie. Takie rozwiązanie jest dobrze wyjaśnione tutaj z właściwego procesu instalacji.
źródło
Mechanizmem, za pomocą którego dodanie użytkownika do grupy
docker
daje uprawnienia do uruchomienia okna dokowanego, jest uzyskanie dostępu do gniazda okna dokowanego/var/run/docker.sock
. Jeśli system plików, który zawiera/var/run
, został podłączony z włączonymi listami ACL, można to również osiągnąć za pomocą list ACL.Podaję to tylko dla kompletności.
Zasadniczo zalecam unikanie list ACL, gdy dostępna jest dobra alternatywa oparta na grupach: Lepiej, jeśli uprawnienia w systemie można zrozumieć, patrząc tylko na członkostwo w grupie. Konieczność skanowania systemu plików w poszukiwaniu wpisów ACL w celu zrozumienia uprawnień systemowych stanowi dodatkowe obciążenie dla audytów bezpieczeństwa.
Ostrzeżenie 1 : ma taką samą
root
równoważność jak dodawanieusername
dodocker
grupy. Nadal możesz uruchomić kontener w sposób, który maroot
dostęp do systemu plików hosta.Ostrzeżenie 2 : Listy kontroli dostępu są znacznie trudniejsze dla audytów bezpieczeństwa niż zabezpieczenia grupowe. Prawdopodobnie unikaj list ACL, jeśli to możliwe, jeśli możesz zamiast tego używać grup, przynajmniej w środowiskach związanych z audytem.
źródło