Ho riscontrato un problema simile, che è un problema di autorizzazione e la causa di questo problema è perché il daemon / server Docker funziona sempre come root
utente e vuole che tu prepari sempre il comando docker consudo
.
Il daemon Docker si collega a un socket Unix anziché a una porta TCP. Per impostazione predefinita, il socket Unix è di proprietà dell'utente root
e gli altri utenti possono accedervi solo tramite sudo
.
Per risolvere questo problema, ecco cosa ha funzionato per me:
Innanzitutto, controlla se hai già creato un gruppo docker:
cat /etc/group
Se non lo trovi docker
nell'elenco visualizzato, dovrai crearne uno:
sudo groupadd docker
Quindi, conferma tu user
e il tuo group
usando il comando qui sotto:
cat /etc/group
Scorri per vedere il gruppo per la finestra mobile. Dovrebbe essere di questo formato
docker:x:140:promisepreston
dov'è il docker
mio group
ed promisepreston
è il miouser
Ora possiamo aggiungere il tuo utente al gruppo docker
Solo per i file contenitore Docker:
Copia ed esegui il comando qui sotto nel tuo terminale esattamente come viene indicato senza modificarlo in alcun modo, indipendentemente dall'immagine / contenitore / comando docker che si desidera eseguire o che sta tentando di eseguire o sta riscontrando il problema dell'autorizzazione:
sudo usermod -aG docker $USER
Dopo aver eseguito il comando sopra, è necessario disconnettersi e riconnettersi in modo da rivalutare l'appartenenza al gruppo. Tuttavia, su Linux, puoi anche eseguire il comando seguente per attivare le modifiche ai gruppi ( Copia ed esegui il comando di seguito nel tuo terminale esattamente come è stato dichiarato senza modificarlo in alcun modo, indipendentemente dall'immagine docker / contenitore / comando che si desidera eseguire o si sta tentando di eseguire o sta riscontrando il problema di autorizzazione ):
newgrp docker
Ora puoi verificare che puoi eseguire i comandi docker senza le autorizzazioni sudo, eseguendo nuovamente il comando che causa nuovamente il problema delle autorizzazioni, ad esempio ( Sostituisci my-command
con il nome dell'immagine / contenitore / comando ):
docker run my-command
Per file Docker e file system locale:
Se hai una copia dei file sul tuo filesystem locale, puoi cambiare la proprietà della directory dell'applicazione in cui sono memorizzati i file dell'applicazione, usando questo formato:
sudo chown <your_user>:<your_group> -R my-app-directory/
Quindi nel mio caso sarà:
sudo chown promisepreston:docker -R my-app-directory/
Nota: eseguire questo comando nella directory principale che contiene la directory dell'applicazione.
È tutto.
Spero che aiuti