我正在尝试以非root用户身份运行docker。当我尝试时,我收到以下错误:
$ 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?
我可以以root身份运行docker:
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[...]
我已将此用户放入Unix组docker
:
$ groups
domain users docker suappprod stashadmin config_mgmt remote server access sudevmail sudevsvn
但是,如果没有 sudoing 以root身份,该用户仍然无法运行大多数docker命令。
我使用的是较旧版本的docker:
$ docker --version
Docker version 1.6.1, build a8a31ef/1.6.1
我知道最新的是1.10,我们公司可以将所有docker安装更新到1.9.2,但这需要花费很多精力和时间。
还有什么我需要看的吗?用户已多次登录和注销。我还没有重新启动系统。
答案 0 :(得分:5)
检查此命令的内容
- > ls -l /var/run/docker.sock
您可能希望使用chmod(例如:sudo chmod 777 /var/run/docker.sock
)更改此文件的权限,具体取决于您要授予的权限。
答案 1 :(得分:4)
将用户添加到Docker组(因为Docker组可以完全控制套接字)
以root用户身份将用户添加到泊坞窗组:
这就是我能够一次又一次在我的Ubuntu系统上进行设置的方法。
答案 2 :(得分:4)
我的docker版本是17.06.1-ce,在Ubuntu 16.04.3 LTS上构建874a737
对于使用systemd
的Linux发行版,有一个名为docker.socket
linux@linux-ubuntu:~$ sudo systemctl status docker.socket
● docker.socket - Docker Socket for the API
Loaded: loaded (/lib/systemd/system/docker.socket; disabled; vendor preset: enab
Active: active (running) since Sab 2017-08-26 01:15:26 WIB; 9min ago
Listen: /var/run/docker.sock (Stream)
Agu 26 01:15:26 hasto-ubuntu systemd[1]: Starting Docker Socket for the API.
Agu 26 01:15:26 hasto-ubuntu systemd[1]: Listening on Docker Socket for the API.
linux@linux-ubuntu:~$
文件位置位于/lib/systemd/system/docker.socket
linux@linux-ubuntu:~$ cat /lib/systemd/system/docker.socket
[Unit]
Description=Docker Socket for the API
PartOf=docker.service
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
linux@linux-ubuntu:~$
我们可以通过该文件将SocketMode=0660
更改为SocketMode=0666
重新启动docker.socket
systemctl restart docker.socket
我们的docker socket权限为066
表示每个用户都可以读取和写入。
现在,每个用户都可以以非root用户身份运行docker
命令。
linux@linux-ubuntu:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03eb2ba2eacd google/cadvisor:latest "/usr/bin/cadvisor..." 5 weeks ago Exited (0) 5 weeks ago elk_cadvisor_1
52efa40edf3a portainer/portainer "/portainer" 7 weeks ago Exited (2) 11 days ago portainer
linux@linux-ubuntu:~$
linux@linux-ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
portainer/portainer latest 96196eaa6b3 8 weeks ago 10.4MB
google/cadvisor latest f9ba08bafdea 5 months ago 57.3MB
linux@linux-ubuntu:~$
请注意对docker命令Why we don't let non-root users run Docker in CentOS, Fedora, or RHEL
的非root访问权限参考: