L'exécution de Docker un utilisateur non root
Je suis en train de lancer le panneau comme un utilisateur non root. Lorsque j'essaie, j'obtiens l'erreur suivante:
$ docker ps
FATA[0000] Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
Je peux courir docker en tant que root:
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[...]
Je l'ai mis de l'utilisateur dans un groupe Unix docker
:
$ groups
domain users docker suappprod stashadmin config_mgmt remote server access sudevmail sudevsvn
Cependant, il semble que cet utilisateur ne peut pas exécuter la plupart du panneau de commandes sans sudoing en tant que root.
Je suis sur une version plus ancienne de docker:
$ docker --version
Docker version 1.6.1, build a8a31ef/1.6.1
Je sais que la dernière est 1.10, et il est possible pour notre société de mettre à jour tous les docker installe à 1.9.2, mais qui va prendre beaucoup d'efforts et de temps.
Est-il autre chose j'ai besoin de regarder? L'utilisateur a été enregistré dans et hors de multiples reprises. Je n'ai pas redémarré le système.
Vous devez vous connecter pour publier un commentaire.
Vérifier ce que cette commande donne
-->
ls -l /var/run/docker.sock
Vous pouvez changer les permissions de ce fichier à l'aide de la commande chmod (Ex:
sudo chmod 777 /var/run/docker.sock
) selon les autorisations que vous souhaitez donner.Ajout d'utilisateurs à l'Docker groupe (depuis le Panneau groupe a le contrôle total de la prise)
En tant que root, ajoutez l'utilisateur au docker groupe:
C'est de cette façon que j'ai été en mesure de mettre en place sur mon Ubuntu systèmes temps et l'heure à nouveau.
/etc/gshadow
, j'aidocker:!::david
et dans/etc/group
, j'ai l'entréedocker:x:1001:david
. Lorsque je me connecte en tant quedavid
et faire ungroups
commande, je reçois ce que l'utilisateur est dans le groupedocker
.Mon docker version est 17.06.1-ce, construire 874a737 sur Ubuntu 16.04.3 LTS
Pour la distribution linux que l'utilisation de
systemd
il ya un service nommédocker.socket
L'emplacement du fichier est à
/lib/systemd/system/docker.socket
Partir de ce fichier, nous pouvons changer
SocketMode=0660
enSocketMode=0666
Redémarrer
docker.socket
Notre menu fixe socket autorisation sera
066
signifie que chaque utilisateur peut lire et écrire dedans.Chaque utilisateur peut maintenant exécuter
docker
commande en tant qu'utilisateur non-root.Être conscient de non-accès à la racine de panneau de commande Pourquoi nous ne laissons pas les utilisateurs non-root exécuter Docker sur CentOS, Fedora, ou RHEL
Référence :
docker
signifie que tous les utilisateurs dans le panneau groupe peut accéder (et l'ajout d'utilisateurs à l'docker groupe au moins des limites qui dispose d'un accès root sur le serveur...). Changer l'666 est une MAUVAISE idée, car il donne à tous les utilisateurs sur le système de docker (et effectivement root via un menu fixe) d'accès.