Eseguire applicazioni con Docker come routine quotidiana può diventare un incubo quando si incontra un errore come “Docker permission denied” durante il tentativo di connessione. Ma non preoccuparti, questo articolo ti aiuterà a tornare in pista.
In questo tutorial, imparerai molteplici modi per risolvere il temuto messaggio di errore “Docker permission denied”.
Prerequisiti
Questo tutorial include dimostrazioni pratiche. Per seguirla, assicurati di avere quanto segue:
- Le dimostrazioni in questo tutorial sono eseguite su Ubuntu 20.04, ma altre distribuzioni Linux funzioneranno anche.
- Il motore Docker, con la versione del tutorial 20.10.8, build 3967b7d.
Eseguire comandi Docker con privilegi elevati
Diversi fattori potrebbero causare un errore di permission denied durante la connessione a Docker. Uno di questi è l’esecuzione dei comandi Docker senza anteporre il comando sudo
. Il comando sudo
ti fornisce diritti amministrativi elevati insieme a privilegi di sicurezza durante l’esecuzione dei comandi.
Di seguito puoi vedere il temuto errore di permission denied durante il tentativo di eseguire un comando docker
.

Lancia il tuo terminale e anteporre sudo
al comando docker
di seguito per eseguire
l’immagine Docker hello-world
. Poiché stai eseguendo un comando con privilegi elevati, dovrai inserire la tua password per procedere.
Vedrai un output simile a quello mostrato di seguito che indica che Docker è stato installato correttamente.

Riavvio del motore Docker
Se l’esecuzione di comandi Docker con privilegi elevati non risolve l’errore di permesso negato, verifica che il tuo Motore Docker sia in esecuzione. Similmente all’esecuzione di un comando docker
senza il comando sudo
, un Motore Docker fermo provoca l’errore di permesso negato. Come si risolve l’errore? Riavviando il motore Docker.
Esegui il comando systemctl
di seguito per confermare lo stato del Motore Docker (status docker
) e se è in esecuzione.
Di seguito, puoi vedere che il Motore Docker è in esecuzione dallo stato restituito che mostra unttivo (in esecuzione).

Se il Motore Docker non è attivo, esegui il comando systemctl
di seguito per avviare il Motore Docker (start docker
).
Ora, esegui il comando Docker hello-world come hai fatto nella sezione “Esecuzione di comandi Docker con privilegi elevati” per verificare che l’errore sia risolto.
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 errore di permessi negati di Docker? In tal caso, è necessario aggiungere il tuo account utente a un gruppo con accesso utente non root. Perché? Perché qualsiasi comando Docker che esegui su una macchina Linux che non è nel gruppo utente attiva un errore di permessi negati.
- Esegui il comando
groupadd
di seguito per creare un nuovo gruppo chiamatodocker
. Inserisci la tua password per continuare l’esecuzione del comando.
Se il gruppo docker esiste nel gruppo utente, vedrai un output simile a quello riportato di seguito.

2. Successivamente, esegui il comando usermod
di seguito, dove le opzioni -aG
indicano al comando di aggiungere il tuo account utente (programmer
) al gruppo (docker
). Questo comando fa sì che il tuo account utente abbia accesso non utente.
3. Esegui il comando newgrp
di seguito per cambiare l’attuale ID del gruppo reale al gruppo docker
.
Esegui questo comando ogni volta che vuoi eseguire Docker come utente non root.
4. Infine, riesegui l’immagine Docker hello-world per confermare che non visualizzi più l’errore. Se, a questo punto, stai ancora ottenendo un errore, considera di concedere maggiori autorizzazioni al file docker.sock. Il file docker.sock è il socket UNIX, un modo per comunicare informazioni di processo tra l’utente e il sistema, a cui il demone Docker ascolta come punto di ingresso dell’API di Docker.
Esegui il comando chmod
riportato di seguito per concedere a tutti gli utenti l’accesso in lettura/scrittura (666
) al file /var/run/docker.sock
. Ora esegui nuovamente l’immagine Docker hello-world per verificare se l’errore è risolto.
Modifica del file di unità di servizio Docker
Se eseguire Docker come utente non root non è sufficiente a risolvere l’errore, prova a modificare il file di unità di servizio SystemD Docker, un sistema di controllo dei servizi. Il file di servizio Docker contiene parametri sensibili che possono alterare il comportamento del demone Docker. Puoi modificare il comportamento predefinito del file di unità Docker aggiungendo un comando aggiuntivo per cambiare il comportamento predefinito del servizio.
1. Esegui il comando sottostante per aprire il file di unità di servizio Docker nel tuo editor di testo preferito. Per questo esempio, il file di servizio Docker si apre nell’editor di testo nano.
2. Trova l’area con l’intestazione del [Servizio] all’interno del file di unità del servizio Docker, come mostrato di seguito. Copia e incolla i comandi seguenti nel file di unità del servizio Docker e salva le modifiche.
Di seguito, il comando SupplementaryGroups
imposta i gruppi Unix supplementari dove vengono eseguiti i processi. Allo stesso tempo, il comando ExecStartPost
pulisce le operazioni eseguite anche se il servizio non riesce a avviarsi correttamente.

3. Ora, esegui i comandi seguenti per riavviare ed abilitare il servizio Docker. Farlo ti permette di avviare il servizio Docker da capo per evitare errori quando esegui comandi Docker.
4. Infine, esegui nuovamente l’immagine Docker hello-world
e verifica se ottieni ancora l’errore di permesso negato.
Esecuzione di Docker in Modalità Privilegiata
Ultimo ma non meno importante, nella lista dei fix per l’errore di permesso negato di Docker c’è l’esecuzione di Docker in modalità privilegiata. Farlo concede a un contenitore Docker l’accesso root al sistema.
Eseguire Docker in modalità privilegiata è rischioso e vulnerabile agli attacchi da parte di hacker. Quindi sii cauto e esegui Docker in modalità privilegiata solo quando sai esattamente cosa stai facendo.
1. Esegui il comando di seguito per elencare tutti i container Docker nel tuo sistema e ottenere l’ID del container che desideri eseguire.

2. Successivamente, esegui il comando docker inspect
di seguito per verificare se il container che desideri eseguire è già in modalità privilegiata (--format='{{.HostConfig.Privileged}}'
). Sostituisci CONTAINER_ID
di seguito con l’effettivo ID del container che hai annotato nel passaggio uno.
Se il container è in modalità privilegiata, il comando restituisce un valore true alla console. Ma se il comando restituisce un valore falso, come mostrato di seguito, passa al passaggio successivo.

3. Infine, esegui il comando docker
di seguito per eseguire il container Docker in modalità privilegiata (--privileged hello-world
).
Conclusione
In questo tutorial, hai imparato molti modi per risolvere l’errore di autorizzazione Docker permission denied, 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 desideri anche mantenere le tue immagini Docker pulite in ogni momento?
Source:
https://adamtheautomator.com/docker-permission-denied/