GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak spustit Docker jako uživatel bez root v Linuxu

Instalace Dockeru na Ubuntu je velmi snadné! Každý, dokonce i nováčci, jej může nainstalovat do 15 minut. Po instalaci Dockeru jsem si všiml, že jako běžný uživatel nemohu provádět většinu operací Dockeru. Pokaždé jsem musel spouštět Docker buď jako uživatel „root“ nebo s oprávněním „sudo“. Kdykoli jsem se pokusil spustit Docker jako uživatel bez oprávnění root nebo bez oprávnění sudo, zobrazí se následující chyba:

Při pokusu o připojení k soketu démona Docker na adrese unix:///var/run/docker.sock bylo odepřeno oprávnění:Získejte http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version:dial unix /var/run/docker.sock:connect:oprávnění odepřeno

Chtěl jsem například zkontrolovat verzi Dockeru jako normální uživatel pomocí příkazu:

Verze $ docker

A zobrazí se mi tato chybová zpráva:

Klient:Docker Engine - CommunityVersion:19.03.8 Verze API:1.40Verze Přejít:go1.12.17Git commit:afacb8b7f0Vytvořeno:St Mar 11 01:25:46 2020OS/Arch:linux/amd64Experimental false>Experimentální oprávnění při pokusu o připojení k soketu démona Docker na unix:///var/run/docker.sock:Získejte http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version:dial unix /var/run/ docker.sock:připojit:oprávnění odepřeno 

Ale když spustím stejný příkaz s oprávněním sudo;

Verze $ sudo docker

Zobrazuje všechny podrobnosti o aktuálně nainstalované verzi Dockeru, jak je znázorněno ve výstupu níže.

Klient:Docker Engine – Komunitní verze:19.03.8 Verze API:1.40 Přejít verze:go1.12.17 Git commit:afacb8b7f0 Sestaveno:St Mar 11 01:25:46 2020 OS/Arch:linux/amd64:Experimental:false Docker Engine – Community Engine:Verze:19.03.8 Verze API:1.40 (minimální verze 1.12) Přejít verze:go1.12.17 Git commit:afacb8b7f0 Sestaveno:St Mar 11 01:24:19 2020 OS/Arch:linux/amd6 Experiment false containerd:Verze:1.2.13 GitCommit:7ad184331fa3e55e52b890ea95e65ba581ae3429 runc:Verze:1.0.0-rc10 GitCommit:dc9208a330393feef4b38 

Po hledání na stránce dokumentace Dockeru jsem si uvědomil, že démon Docker se ve výchozím nastavení váže k Unixovému soketu místo TCP portu. Protože tento zásuvek Unix je vlastněn kořenem uživatele, bude démon Docker spuštěn pouze jako uživatel root. Běžní uživatelé tedy nemohou provádět většinu příkazů Dockeru.

Pokud chcete v Linuxu spustit Docker jako uživatel bez oprávnění root, musíte provést následující kroky. Testoval jsem to na serveru Ubuntu 18.04 a fungovalo to dobře! Mělo by to fungovat i na jiných distribucích Linuxu.

Spusťte Docker jako uživatel bez root v systému Linux

Chcete-li opravit chybu odepřená oprávnění Docker a používat Docker jako uživatel bez oprávnění root, vytvořte skupinu s názvem "docker" pomocí následujícího příkazu:

$ sudo groupadd docker

Dále přidejte svého uživatele do ukotvitelného panelu skupina:

$ sudo usermod -aG docker $USER

Po přidání uživatele do skupiny dockerů se odhlaste a znovu přihlaste, aby se změny projevily.

Případně spusťte následující příkaz a použijte změny na skupiny:

$ newgrp docker

Od této chvíle může normální uživatel (jiný než root) používat Docker bez oprávnění sudo.

Dovolte mi spustit následující příkazy jako normální uživatel:

Verze $ docker
$ docker spustí hello-world

Ukázkový výstup:

Vidět? Nyní mohu spouštět oba tyto příkazy Docker bez povolení sudo.

Pro případ, že jste již před přidáním uživatele do skupiny Docker spustili několik příkazů Docker s oprávněním 'sudo', pravděpodobně se vám zobrazí chyba podobná níže.

UPOZORNĚNÍ:Chyba při načítání konfiguračního souboru:/home/user/.docker/config.json -stat /home/user/.docker/config.json:oprávnění odepřeno

Výše uvedená chybová zpráva znamená, že váš ~/.docker/ adresář byl vytvořen s nesprávnými oprávněními kvůli příkazům 'sudo'. Chcete-li tento problém vyřešit, změňte vlastnictví a oprávnění tohoto adresáře pomocí následujících příkazů:

$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R

Aby se to projevilo, odhlaste se a znovu přihlaste.

Pokud problém stále nevyřeší, možná budete muset odstranit ~/.docker/ adresář. Automaticky se znovu vytvoří, ale ztratíte všechna vlastní nastavení, pokud nějaká existují.

Doufám, že to pomůže.


Docker
  1. Jak spustit program uvnitř kontejneru Docker?

  2. Jak spustit příkaz na spuštěném kontejneru Docker

  3. Jak přidat uživatele do kontejneru Docker?

  1. Jak zkontrolovat verzi Redhat

  2. Jak spustit MySQL v kontejneru Docker

  3. Android - Jak rootovat Samsung S6 pomocí Linuxu?

  1. Jak spustit rsyslog jako uživatel bez root v CentOS/RHEL 7

  2. Spusťte Docker jako uživatel bez oprávnění root

  3. Jak odstranit použití bez oprávnění root s UID 0 v Linuxu