安装完docker一般就会有docker用户组
第二步、将当前用户添加到docker组
1
|
sudo gpasswd -a ${USER} docker
|
第三步、重启docker
1
|
sudo systemctl restart docker
|
第四步、授予读写权限
1
|
sudo chmod a+rw /var/run/docker .sock
|
补充:非root用户没有权限使用docker
运行docker run时提示no permission
centos上安装docker的官方文档
在安装docker-ce的时候已经自动创建了docker用户组,但是需要手动添加用户到docker用户组
1
|
$ sudo usermod -aG docker $USER
|
或者$ sudo usermod -aG docker {指定用户名}
但我在添加用户到docker用户组后还是提示no permission
比如我要运行ubuntu 14.04的bash:
1
2
3
|
[hsowan@localhost shell-workspace]$ docker run -it -- rm ubuntu:14.04 bash
docker: Got permission denied while trying to connect to the Docker daemon socket at unix: ///var/run/docker .sock: Post http: // %2Fvar%2Frun%2Fdocker.sock /v1 .38 /containers/create : dial unix /var/run/docker .sock: connect: permission denied.
See 'docker run --help' .
|
why? 原因在于虽然用户加入了docker用户组,但是当前没有切换到docker用户组,所以还是没有权限
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
1
|
$ newgrp docker
|
除了给用户添加用户组之外,还有什么办法可以让非root用户可以执行docker相关的命令呢?
ok,那我们来查看一下/var/run/docker.sock的权限
1
|
$ sudo ll /var/run/docker .sock
|
会得到下面的结果:
1
|
srw-rw----. 1 root docker 0 Sep 22 15:29 /var/run/docker .sock
|
所以现在直接修改/var/run/docker.sock的权限
1
|
$ sudo chmod 666 /var/run/docker .sock
|
现在就可以在非root用户下运行docker了
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$ docker run -it -- rm ubuntu:14.04 bash
root@5c60abab6425:/ # cat /etc/os-release
NAME= "Ubuntu"
VERSION= "14.04.5 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME= "Ubuntu 14.04.5 LTS"
VERSION_ID= "14.04"
HOME_URL= "http://www.ubuntu.com/"
SUPPORT_URL= "http://help.ubuntu.com/"
BUG_REPORT_URL= "http://bugs.launchpad.net/ubuntu/"
root@5c60abab6425:/ # exit
exit
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://yumbo.blog.csdn.net/article/details/103171869