GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Risoluzione dei problemi relativi all'autorizzazione Docker negata

L'esecuzione di applicazioni con Docker come routine quotidiana può diventare un incubo quando si verifica un errore come l'autorizzazione Docker negata durante il tentativo di connessione. Ma non preoccuparti, questo articolo ti aiuterà a tornare a correre in men che non si dica.

In questo tutorial imparerai molti modi per risolvere il temuto messaggio di errore di negazione dell'autorizzazione Docker.

Prerequisiti

Questo tutorial comprende dimostrazioni pratiche. Per seguire, assicurati di avere in atto quanto segue:

  • Le demo in questo tutorial funzionano su Ubuntu 20.04, ma funzioneranno anche altre distribuzioni Linux.
  • Il motore Docker, con il tutorial che esegue la versione 20.10.8, build 3967b7d.

Esecuzione dei comandi Docker elevati

Molti fattori potrebbero portare a un permesso negato errore durante la connessione a Docker. Uno di questi fattori è che potresti eseguire comandi Docker senza anteporre sudo comando. Il sudo command è ciò che ti dà diritti amministrativi elevati insieme a privilegi di sicurezza durante l'esecuzione dei comandi.

Di seguito, puoi vedere il temuto permesso negato errore durante il tentativo di eseguire una docker comando.

Avvia il tuo terminale e anteponi sudo nella docker comando qui sotto per run il hello-world Immagine Docker. Poiché stai eseguendo un comando con privilegi elevati, dovrai inserire la tua password per procedere.

sudo docker run hello-world

Vedrai un output simile a quello mostrato di seguito che indica che Docker è installato correttamente.

Riavvio del Docker Engine

Se l'esecuzione di comandi Docker con privilegi elevati non risolve l'autorizzazione negata errore, verifica che Docker Engine sia in esecuzione. Simile all'esecuzione di una docker comando senza sudo comando, un Docker Engine arrestato attiva l'autorizzazione negata errore. Come risolvi l'errore? Riavviando il motore Docker.

Esegui systemctl comando di seguito per confermare lo stato del Docker Engine (status docker ) e se è in esecuzione.

sudo systemctl status docker

Di seguito, puoi indicare che Docker Engine è in esecuzione dallo stato restituito che mostra active (in esecuzione).

Se Docker Engine non è attivo, esegui systemctl comando seguente per avviare Docker Engine (start docker ).

sudo systemctl start docker

Ora, esegui il comando Hello-world Docker come hai fatto nella sezione "Esecuzione di comandi Docker elevati" per verificare che l'errore sia stato risolto.

sudo docker run hello-world

Aggiunta di un account utente a un gruppo con accesso utente non root

Hai confermato che il tuo motore Docker funziona, ma stai ancora ricevendo un autorizzazione negata Docker errore? In tal caso, devi aggiungere il tuo account utente a un gruppo con accesso utente non root. Come mai? Perché qualsiasi comando Docker eseguito su una macchina Linux non nel gruppo di utenti attiva autorizzazione negata errore.

  1. Esegui groupadd comando seguente per creare un nuovo gruppo chiamato docker . Inserisci la tua password per continuare a eseguire il comando.
sudo groupadd docker

Se il gruppo Docker esiste nel gruppo utenti, vedrai un output come quello di seguito.

2. Quindi, esegui usermod comando sotto dove -aG opzioni dicono al comando di aggiungere il tuo account utente (programmer ) nella (docker ) gruppo. Questo comando fa sì che il tuo account utente abbia accesso non utente.

sudo usermod -aG docker programmer

3. Esegui newgrp comando seguente per modificare l'ID del gruppo reale corrente nella docker gruppo.

Esegui questo comando ogni volta che vuoi eseguire Docker come utente non root.

sudo newgrp docker 

4. Infine, esegui nuovamente l'immagine Docker hello-world per confermare che non vedi più l'errore. Se, a questo punto, ricevi ancora un errore, considera di concedere più accesso al file docker.sock. Il docker.sock file è il socket UNIX, un modo per comunicare le informazioni di processo tra l'utente e il sistema, che il demone Docker ascolta come punto di ingresso dell'API Docker.

Esegui chmod comando seguente per consentire a tutti gli utenti di leggere/scrivere (666 ) accesso a /var/run/docker.sock file. Ora esegui di nuovo l'immagine Docker Hello-world per vedere se l'errore è stato risolto.

sudo chmod 666 /var/run/docker.sock

Modifica del file dell'unità di servizio Docker

Se l'esecuzione di Docker come utente non root non è sufficiente per correggere l'errore, provare a modificare Docker SystemD, un sistema di controllo del servizio, un file dell'unità di servizio. Il file del servizio Docker contiene parametri sensibili che possono alterare il comportamento del daemon Docker. Puoi modificare il comportamento predefinito del file dell'unità Docker aggiungendo un comando aggiuntivo per modificare il comportamento predefinito del servizio.

1. Esegui il comando seguente per aprire il file dell'unità di servizio Docker nel tuo editor di testo preferito. Per questo esempio, il file del servizio Docker si apre nell'editor di testo nano.

sudo nano /usr/lib/systemd/system/docker.service

2. Individua l'area con il [Servizio] intestazione all'interno del file dell'unità di servizio Docker, come mostrato di seguito. Copia/incolla i comandi seguenti nel file dell'unità di servizio Docker e salva le modifiche.

Di seguito, i SupplementaryGroups comando imposta i gruppi Unix supplementari in cui vengono eseguiti i processi. Allo stesso tempo, il ExecStartPost comando pulisce le operazioni che vengono eseguite anche se il servizio non si avvia correttamente.

SupplementaryGroups=docker    
ExecStartPost=/bin/chmod 666 /var/run/docker.sock

3. Ora, esegui i comandi seguenti per riavviare e abilitare il servizio Docker. In questo modo puoi riavviare il servizio Docker per evitare di ricevere errori quando esegui i comandi Docker.

# Reloads all the Docker unit files and recreates the entire dependency tree.
sudo systemctl daemon-reload
# Restarts the Docker service
sudo systemctl start docker
# Enable the Docker to run on your computer.
sudo systemctl enable docker

4. Infine, riesegui hello-world Immagine Docker e verifica se ricevi ancora l'errore di autorizzazione negata.

Eseguire Docker in modalità Privilegio

Ultimo ma non meno importante, nell'elenco di correzione dell'errore di autorizzazione negata Docker è in esecuzione Docker in modalità privilegiata. In questo modo si garantisce a un contenitore Docker l'accesso come root al sistema.

L'esecuzione di Docker in modalità privilegiata è rischiosa e vulnerabile agli attacchi degli hacker. Quindi sii prudente ed esegui Docker in modalità privilegiata solo quando sai esattamente cosa stai facendo.

1. Eseguire il comando seguente per elencare tutti i contenitori Docker nel sistema e ottenere l'ID del contenitore che si desidera eseguire.

sudo docker ls -a

2. Quindi, esegui docker inspect comando seguente per verificare se il contenitore che desideri eseguire è già in modalità privilegiata (--format='{{.HostConfig.Privileged}}' ). Sostituisci CONTAINER_ID di seguito con l'ID contenitore effettivo di cui hai preso nota nel passaggio uno.

docker inspect --format='{{.HostConfig.Privileged}}' CONTAINER_ID

Se il contenitore è in modalità privilegiata, il comando restituisce un true valore alla console. Ma se il comando restituisce un valore falso, come mostrato di seguito, vai al passaggio successivo.

3. Infine, esegui la docker comando qui sotto per run il contenitore Docker in modalità privilegiata (--privileged hello-world ).

sudo docker run --privileged hello-world

Conclusione

Durante questo tutorial, hai imparato molti modi per risolvere il permesso negato di Docker errore, dall'esecuzione di comandi elevati all'esecuzione di Docker in modalità privilegiata.

Ora sai come eliminare un errore durante la creazione di applicazioni basate su Docker; forse vuoi anche mantenere sempre pulite le tue immagini Docker?


Docker
  1. Come eseguire un comando su un contenitore Docker in esecuzione

  2. Come correggere l'errore di autorizzazione Docker negata su Ubuntu

  3. Esempi utili del comando Docker ps

  4. Impossibile eseguire NGINX Docker a causa di "13:Permesso negato"

  5. Comprensione dell'output del comando "statistiche docker".

20 utili esempi di comandi Docker in Linux

Come utilizzare il comando Ispeziona Docker

Errore di comando "immagini docker" - "Autorizzazione negata"

Compositore:file_put_contents(./composer.json):impossibile aprire il flusso:autorizzazione negata

Reindirizzamento dell'output del comando nella finestra mobile

errore di montaggio 13 =Autorizzazione negata