我在docker组中添加了一个非root用户,并在此非root用户连接到docker守护程序时运行了其他服务。但该服务无法正常工作。我为此做一个测试示例:
root@# systemctl start docker.service
root@# gpasswd -a tiger docker
在Tiger中创建系统服务:
[Service]
ExecStart=/home/tiger/connectdocker
Restart=always
StartLimitInterval=0
Delegate=true
KillMode=process
[Install]
WantedBy=default.target
在/home/tiger/connectdocker
这样的:
docker run -itd busybox 2> connectdocker.log
启动此服务:
tiger@# systemctl --user enable connectdocker.service
tiger@# systemctl --user start connectdocker.service
结果:
Thu Jul 21 00:59:15 CST 2016
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
但是我可以用tiger连接到docker.sock:
tiger@# docker run -itd busybox
997e99f959cfd5500319935ec17677775da9d367d203a11efef8b42161c3ee64
为了证明这一点,我将/var/run/docker.sock
组从docker 更改为Tiger,并且connectdocker服务可以连接到docker守护程序。
变化/var/run/docker.sock
:
ls -l /run/docker.sock
srw-rw---- 1 root docker 0 Jul 21 00:33 /run/docker.sock
至:
ls -l /run/docker.sock
srw-rw---- 1 root tiger 0 Jul 21 00:33 /run/docker.sock