以非root用户身份运行Docker
我试图以非root用户身份运行docker。当我尝试,我得到以下错误:以非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?
我可以运行搬运工为根:
$ 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 --version
Docker version 1.6.1, build a8a31ef/1.6.1
我知道,最新为1.10,并有可能为我们公司更新所有泊坞窗将安装到1.9.2,但这需要很多努力和时间。
还有什么我需要看看?用户已多次登录和注销。我还没有重启系统。
将用户添加到多克尔组(因为泊坞组具有完全控制到插座)
作为根,将用户添加到该搬运工组:
- 猫的/ etc /组
- gpasswd -a <用户名>搬运工
- 退出(如根)
- 注销
- 登录作为我们呃,并试图运行“Docker PS”来验证。
这就是我已经能够在我的Ubuntu系统上一次又一次地设置它。
检查一下这个命令给出 - >ls -l /var/run/docker.sock
您可能要更改这个文件的使用chmod的权限(例如:sudo chmod 777 /var/run/docker.sock
),这取决于你想给什么权限。
但是当您重新启动旧的权限时。 – Makoton
660将足够用于任何目的。如果所有人都可以完全访问套接字,那么可以将所有人添加到docker组中。 –
我的搬运工版本是17.06.1-CE,在Ubuntu 16.04.3建立874a737 LTS
对于Linux发行版,使用systemd
有一个名为docker.socket
[email protected]:~$ 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.
[email protected]:~$
文件位置的服务是在/lib/systemd/system/docker.socket
[email protected]:~$ 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
[email protected]:~$
从该文件中,我们可以改变SocketMode=0660
成SocketMode=0666
重启docker.socket
systemctl restart docker.socket
我们的码头工人套接字权限将066
意味着每个用户都可以读,写进去。
每个用户现在都可以以非root用户身份运行docker
命令。
[email protected]:~$ 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
[email protected]:~$
[email protected]:~$ 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
[email protected]:~$
注意的非root访问泊坞窗命令Why we don't let non-root users run Docker in CentOS, Fedora, or RHEL
参考:
组 “泊坞窗” 已经存在。我之前添加了它。在'/ etc/gshadow'中,我有'docker:!:: david'和'/ etc/group',我有'docker:x:1001:david'这个入口。当我以'david'登录并执行'groups'命令时,我得到该用户在组“docker”中。 –
请注意,任何添加到码头组的人都可能被视为root。 https://github.com/moby/moby/issues/9976 –