[Ubuntu] Instellingen en voorzorgsmaatregelen voor het uitvoeren van docker zonder het sudo-commando

2019 年 10 月 3 日

Een opmerking over het inschakelen van docker zonder sudo bij gebruik van docker op Ubuntu.

Op gang brengen

Na het installeren van docker, zoals het issudoToen ik de werking controleerde zonder een commando, deed zich een fout voor.

#Run vanaf Ubuntu terminal docker run hallo-world 

docker: kreeg toestemming geweigerd terwijl ik probeerde verbinding te maken met de Docker-daemon-socket op unix: ///var/run/docker.sock: Post http: //%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/create: dial unix /var/run/docker.sock: connect: toestemming geweigerd. Zie'docker run –help '.

Het lijkt erop dat de toegang tot de docker-daemon is geweigerd. Ik typte sudo docker run hello-world en het werkte.

De oorzaak van de fout lijkt de volgende redenen te zijn.

Docker communiceert met een daemon (dockerd) die draait met root-privileges via unix socket of tcp / ip, maar je moet tot de docker-groep behoren of root-privileges hebben om toegang te krijgen tot dockerd.

Begrijp de gevaren van het toevoegen van gebruikers aan een dockergroep met Docker

Door het sudo-commando toe te voegen, kunnen algemene gebruikers commando's uitvoeren die niet kunnen worden uitgevoerd zonder root-privileges (zoals verbinding maken met een daemon).Maar elke keer sudo toevoegen is vervelend.

Tegenmaatregelen en voorzorgsmaatregelen

Een manier om zonder sudo uit te voeren, is door de gebruiker tot de dokcer-groep te laten behoren (vaak googled), maar er lijkt ook een beveiligingsprobleem te zijn.

Referentie: risico bij het toekennen van root-achtige privileges in docker-groep (officieel document)

Als je docker zonder sudo wilt gebruiken, newgrp Er wordt gezegd dat het beter is om tijdelijk tot een groep of gebruikersnaamruimten te behoren.

sudo groupadd docker # $ USER met gebruikersnaam sudo usermod -aG docker $ USER newgrp docker docker run hello-world 

Hallo van Docker!
Dit bericht geeft aan dat uw installatie correct lijkt te werken.

Om dit bericht te genereren, heeft Docker de volgende stappen ondernomen:

1. De Docker-client heeft contact opgenomen met de Docker-daemon.
2. De Docker-daemon heeft de afbeelding "hallo-wereld" uit de Docker Hub gehaald.
(amd64)
3. De Docker-daemon heeft een nieuwe container gemaakt van die image die de
uitvoerbaar bestand dat de uitvoer produceert die u momenteel aan het lezen bent.
4. De Docker-daemon heeft die uitvoer naar de Docker-client gestreamd, die het heeft verzonden
naar uw terminal.

Om iets ambitieuzers te proberen, kun je een Ubuntu-container draaien met:
$ docker run -it ubuntu bash

Deel afbeeldingen, automatiseer workflows en meer met een gratis Docker-ID: https://hub.docker.com/

Ga voor meer voorbeelden en ideeën naar:
https://docs.docker.com/get-started/