Come risolvere i problemi di autorizzazione per la finestra mobile in Ubuntu?


35

Ho installato la finestra mobile come descritto qui . Uso Ubuntu Trusty 14.04 (LTS) (64 bit) . Tutto durante l'installazione andava bene. Anche il comando si $ sudo docker run -i -t ubuntu /bin/bashcompleta bene (dopo aver digitato "exit" nella console aperta. Ma quando provo a fare qualcos'altro ottengo il "permesso negato". Ad esempio:

`$ sudo docker run -d -P training/webapp python app.py`

Reuslts in Post http:///var/run/docker.sock/v1.12/containers/create: dial unix /var/run/docker.sock: permission denied

` docker info`

Reuslts in Get http:///var/run/docker.sock/v1.12/info: dial unix /var/run/docker.sock: permission denied

Come risolverlo? Ho cercato su Google il problema ma non riesco a trovare una soluzione per il mio caso.

Risposte:


50

Aggiungi il gruppo docker se non esiste già.

$ sudo groupadd docker

Aggiungi l'utente connesso ${USER}al gruppo finestra mobile. Cambia il nome utente in modo che corrisponda al tuo utente preferito.

$ sudo gpasswd -a ${USER} docker

Riavvia il demone Docker:

$ sudo service docker restart # Or docker.io for older versions
# 18.04+ with snap:
$ sudo systemctl restart snap.docker.dockerd

È necessario disconnettersi e accedere nuovamente per aggiornare le autorizzazioni di gruppo. Per evitarlo, è possibile passare a una subshell come segue. O usa uno qualsiasi degli altri trucchi menzionati in questa domanda :

su - $USER

14
Ho dovuto riavviare per rendere effettivo questo.
obsoleto

8
Non è necessario riavviare, basta disconnettersi e accedere.
Ajay Gautam,

2
La disconnessione lo ha fatto, anche quando exec $SHELLnon lo ha fatto. Sono interessato a sapere con quale meccanismo il logout ha risolto il problema. Questo non è Windows!
Darth Egregious,

1
In Fedora, prima devi modificare /etc/selinux/confige mettere SELINUX=disabled, quindi riavviare Linux
Junior M

1
Grande spiegazione! Sei il migliore! :)
Francis Rodrigues,

5

Se usi CentOS o RedHat, potresti dover disabilitare SELinux eseguendo:

setenforce 0

Eiter si riavvia in seguito per riattivare SELinux o eseguire setenforce 1.


4

Ho avuto lo stesso problema, a causa di selinux. Puoi verificare se selinux è il colpevole:

  1. Disabilitare selinux: setenforce 0
  2. Nuovo tentativo

Se la disabilitazione di selinux ha risolto il tuo problema, non è un motivo per lasciarlo disabilitato:

  1. Abilita selinux: setenforce 1
  2. Consenti la connessione socket nella configurazione selinux: setsebool docker_connect_any true
  3. Esegui il contenitore Docker con l' --priviledgedopzione

3

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


1

Con la versione corrente non è necessario aggiungere il gruppo docker.
Esiste automaticamente dall'installazione. Puoi controllare usando il comando:

$ sudo groupadd docker
groupadd: group 'docker' already exists

Quindi, al fine di gestire Docker come utente non root , è sufficiente aggiungere l'utente al gruppo docker, quindi disconnettersi e riconnettersi in modo da rivalutare l'appartenenza al gruppo:

$ sudo usermod -aG docker $USER
$ logout

Per verificarlo quando accedi di nuovo

$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

Puoi persino forzare l'uso GROUP:dockercome nuovo gruppo principale:

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

Per verificarlo quando accedi di nuovo

$ id
uid=1001(<user_name>) gid=999(docker) groups=999(docker),...
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.