Autorizzazione negata quando si esegue Docker dopo averlo installato come Snap


33

Ho installato Docker tramite l'archivio software, il che indicava che si trattava di un pacchetto Snap. Il che va bene per me, immagino, ma sfortunatamente, ogni comando Docker che ho provato non funziona:

$ docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/info: dial unix /var/run/docker.sock: connect: permission denied

Qualche idea su come risolvere questo problema?

Modifica: per ora ho risolto il problema installando Docker dai repository di Docker , che potrebbe funzionare anche per le persone che sfogliano questa domanda in futuro. Lascio comunque aperta la domanda a coloro che vogliono essere in grado di eseguirla dallo Snap.


Docker installato dai repository ufficiali docker. La finestra mobile era già in esecuzione quando ho aggiunto il mio utente al dockergruppo, id -nGnon ha mostrato la finestra mobile e qualsiasi dockercomando ha comportato un errore di autorizzazione negata. Il logout e il back in non hanno funzionato perché il processo del sistema docker continua a funzionare. Il riavvio del sistema o il riavvio della finestra mobile ha mostrato l'utente come parte del gruppo finestra mobile e ha permesso di eseguire i comandi finestra mobile. NOTA: 0 rappresentanti, non è possibile aggiungere commenti.
Santosh Patel,

Risposte:


33

Questo è dalla pagina GitHub, hai provato questi esatti passaggi:

If you are using Ubuntu Core 16,

Connect the docker:home plug as it's not auto-connected by default:

$ sudo snap connect docker:home

If you are using an alternative snap-compatible Linux distribution ("classic" in snap lingo), and would like to run docker as a normal user:

Create and join the docker group.

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker

You will also need to disable and re-enable the docker snap if you added the group while it was running.

$ sudo snap disable docker
$ sudo snap enable docker

Da Docker Snap Github


Non avevo visto quella pagina, quindi grazie per il link. Detto questo, dal momento che non sto usando Ubuntu Core, dovrei seguire le addgroupistruzioni, che penso riguardino ciò che ho fatto, come per le altre risposte. Sfortunatamente preferirei non toccare più il sistema attualmente funzionante, ma mi piacerebbe ascoltarlo se qualcun altro lo prova e riesce a farlo funzionare.
Vincent,

2
disabilitare / abilitare lo snap docker mi ha aiutato, grazie
Manish Kumar il

1
Questo vale anche per Ubuntu (Desktop) 19.04.
Nick Breen,

31

Il messaggio di errore indica che l'utente corrente non può accedere al motore docker, poiché mancano le autorizzazioni per accedere al socket unix per comunicare con il motore.

Soluzione temporanea

Utilizzare il sudocomando per eseguire i comandi con autorizzazioni elevate ogni volta.

Soluzione permanente (suggerita)

Aggiungi l'utente corrente al dockergruppo. Ciò può essere ottenuto digitando

sudo usermod -a -G docker $USER

È necessario disconnettersi e accedere nuovamente per rendere effettiva l'appartenenza al gruppo.

Fonte: techoverflow.net


1
Il tuo Google-fu è meglio del mio, a quanto pare. Sfortunatamente, questo non funziona. Innanzitutto, il dockergruppo non esisteva. Ho quindi eseguito prima sudo addgroup docker, quindi eseguito nuovamente il comando, quindi disconnesso e riconnesso. Sfortunatamente, l'errore mostrato nella domanda persiste ...
Vincent

2
@Vincent non hai dimenticato che i cambiamenti di gruppo non avvengono immediatamente, vero? Prova newgrp dockero disconnettiti e accedi.
ADDB

No, scusa, ho dimenticato di menzionarlo - Ho aggiornato il mio commento mentre tu rispondevi :) In esecuzione groups vincentdà:vincent adm cdrom sudo dip plugdev lpadmin sambashare docker
Vincent

@ Vincent solo per riferimento, il tuo demone docker è avviato, giusto? Prova sudo /etc/init.d/docker statuso sudo service docker statusprova questo.
ADDB

Hmm, non penso che quelli funzionino perché è uno Snap: paste.ubuntu.com/25219172 Detto questo, ps cax | grep dockerd31034 ? Ssl 0:05 dockerd.
Vincent

6

Presumo che il tuo nome utente sia già nel gruppo docker. Per verificare ciò, eseguire il comando seguente.

id -nG

In caso contrario, è necessario aggiungere l'utente nel gruppo finestra mobile tramite il comando seguente.

sudo groupadd docker
sudo usermod -aG docker $USER

Quando si esegue il comando sudo systemctl start docker, viene creato un processo finestra mobile. Quel processo docker contiene dockerdthread demone. Il comando crea anche un docker.socksocket Unix predefinito . Il docker.socksocket è continuamente ascoltato dal dockerdthread demone. Ciò ti consente di eseguire IPC a livello di kernel con docker.pidprocess. Per poter utilizzare questo socket docker, è necessario disporre dell'autorizzazione adeguata dal livello di processo ( docker.pid) e dal livello di file ( docker.sock). Quindi, l'esecuzione sotto due comandi dovrebbe risolvere il tuo problema. sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission sudo chmod a+rwx /var/run/docker.pid


Solo questo funziona per Ubuntu 18.04. Grazie mille Uddhav Gautam
Sabbir,

3
sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

non richiede un riavvio ed è più sicuro


1

È necessario aggiungere l'utente al gruppo Docker ( consultare i documenti ufficiali ).

Puoi aggiungere sudodavanti al comando o puoi aggiungere l'utente nel dockergruppo usando questo comando:

sudo usermod -aG docker <USER>

Disconnettersi e riconnettersi in modo da rivalutare l'appartenenza al gruppo.


Dato che i contenuti di quel link possono scomparire, aggiungi qui i dettagli rilevanti.
Chai T. Rex,

Non è necessario, l'altra risposta ha già menzionato l'aggiunta dell'utente al gruppo: non ha aiutato. (Inoltre, nessun motivo per cui ciò sarebbe di aiuto per l'installazione di Snap ma non per l'installazione normale.)
Vincent
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.