J'ai installé le menu fixe comme décrit ici . J'utilise Ubuntu Trusty 14.04 (LTS) (64 bits) . Tout s'est bien passé lors de l'installation. De plus, la commande $ Sudo docker run -i -t ubuntu /bin/bash
se termine bien (après avoir tapé "exit" dans la console ouverte. Mais lorsque j'essaie de faire autre chose, je reçois une "permission refusée". Par exemple:
`$ Sudo docker run -d -P training/webapp python app.py`
Réutilisation dans Post http:///var/run/docker.sock/v1.12/containers/create: dial unix /var/run/docker.sock: permission denied
` docker info`
Réutilisation dans Get http:///var/run/docker.sock/v1.12/info: dial unix /var/run/docker.sock: permission denied
Comment résoudre ceci? J'ai googlé sur le problème mais je ne trouve pas de solution à mon cas.
Ajoutez le groupe de menus fixe s'il n'existe pas déjà.
$ Sudo groupadd docker
Ajoutez l'utilisateur connecté ${USER}
au groupe de menus. Changez le nom d'utilisateur pour correspondre à votre utilisateur préféré.
$ Sudo gpasswd -a ${USER} docker
Redémarrez le démon Docker:
$ Sudo service docker restart # Or docker.io for older versions
# 18.04+ with snap:
$ Sudo systemctl restart snap.docker.dockerd
Vous devez vous déconnecter et vous reconnecter pour mettre à jour les autorisations du groupe. Pour éviter cela, vous pouvez basculer vers un sous-shell comme suit. Ou utilisez l'une des astuces mentionnées dans cette question :
su - $USER
Si vous utilisez CentOS ou RedHat, vous devrez peut-être d'abord désactiver SELinux en exécutant:
setenforce 0
Eiter redémarre ensuite pour réactiver SELinux ou exécuter setenforce 1
.
J'ai eu le même problème, en raison de selinux. Vous pouvez vérifier si selinux est le coupable en:
setenforce 0
Si la désactivation de selinux a résolu votre problème, ce n'est pas une raison pour le laisser désactivé:
setenforce 1
setsebool docker_connect_any true
--priviledged
Je suppose que votre nom d'utilisateur est déjà dans le groupe Docker. Pour vérifier cela, lancez la commande ci-dessous.
id -nG
Sinon, vous devez ajouter votre utilisateur au groupe de menus en utilisant la commande ci-dessous.
Sudo groupadd docker
Sudo usermod -aG docker $USER
Lorsque vous exécutez la commande, Sudo systemctl start docker
, un processus de menu fixe est créé. Ce processus de menu fixe contient le thread dockerd
daemon. La commande crée également une socket par défaut docker.sock
Unix. Le socket docker.sock
est écouté en permanence par le thread du démon dockerd
. Cela vous permet de faire IPC au niveau du noyau avec le processus docker.pid
. Pour pouvoir utiliser ce socket, vous devez disposer des autorisations appropriées au niveau processus (docker.pid
) et au niveau fichier (docker.sock
). Donc, exécuter ci-dessous deux commandes devrait résoudre votre problème. Sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission Sudo chmod a+rwx /var/run/docker.pid
Par version actuelle , il n'est pas nécessaire d'ajouter le groupe docker
.
Il existe automatiquement lors de l’installation. Vous pouvez vérifier en utilisant la commande:
$ Sudo groupadd docker
groupadd: group 'docker' already exists
Donc, pour gérer Docker en tant qu'utilisateur non root, ajoutez simplement votre utilisateur au menu fixe puis déconnectez-vous et reconnectez-vous afin que votre appartenance au groupe soit réévaluée:
$ Sudo usermod -aG docker $USER
$ logout
Pour le vérifier lorsque vous vous reconnectez
$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
Vous pouvez même forcer à utiliser GROUP:docker
comme nouveau groupe principal:
$ Sudo chown "$USER":"docker" /home/"$USER"/.docker -R
$ Sudo chmod g+rwx "$HOME/.docker" -R
$ Sudo usermod -g docker ${USER}
$ logout
Pour le vérifier lorsque vous vous reconnectez
$ id
uid=1001(<user_name>) gid=999(docker) groups=999(docker),...