以另一个用户身份启动Docker守护程序?

时间:2018-03-28 16:35:59

标签: docker docker-compose

在RHEL中安装了Docker 17.x版本,我们正在低于这个范围。

-bash-4.2$ docker version
Client:
 Version:      17.09.1-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   19e2cf6
 Built:        Thu Dec  7 22:23:40 2017
 OS/Arch:      linux/amd64
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.32/version: dial unix /var/run/docker.sock: connect: permission denied
-bash-4.2$

为了解决这个问题,我们引入了另一个用户组(docker-user),并添加了该组中的所有用户。之后我们运行了这个命令并能够运行docker。

sudo systemctl stop docker
sudo systemctl start docker
cd /var/run
sudo chown :docker-user docker.sock

但我们面临的另一个问题是,每当VM重新启动时,DOCKER都不会运行。所以我们决定将run docker设置为守护进程,然后我们跟着 以下步骤。

1. create docker.conf file under /etc/systemd/system/docker.service.d folder.
2. added this entry in docker.conf file 
  [Service]
  ExecStart=
  ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
  ExecStartPost=/bin/chown :docker-user /var/run/docker.sock

添加此条目后,我们运行了

1. sudo systemctl daemon-reload
2. sudo systemctl stop docker
3. sudo systemctl start docker

我们正处于异常

之下
-bash-4.2$ sudo systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─docker.conf
   Active: failed (Result: start-limit) since Wed 2018-03-28 09:10:50 PDT; 12s ago
     Docs: https://docs.docker.com
  Process: 23395 ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock (code=exited, status=1/FAILURE)
 Main PID: 23395 (code=exited, status=1/FAILURE)

Mar 28 09:10:50 hostname systemd[1]: Failed to start Docker Application Container Engine.
Mar 28 09:10:50 hostname systemd[1]: Unit docker.service entered failed state.
Mar 28 09:10:50 hostname systemd[1]: docker.service failed.
Mar 28 09:10:50 hostname systemd[1]: docker.service holdoff time over, scheduling restart.
Mar 28 09:10:50 hostname systemd[1]: start request repeated too quickly for docker.service
Mar 28 09:10:50 hostname systemd[1]: Failed to start Docker Application Container Engine.
Mar 28 09:10:50 hostname systemd[1]: Unit docker.service entered failed state.
Mar 28 09:10:50 hostname systemd[1]: docker.service failed.

指导我如何将docker设置为守护进程

1 个答案:

答案 0 :(得分:0)

所以,你已经挖好了。

但是,这种行为内置于Docker中。对于用户组,docker守护程序将允许具有docker组的用户访问服务器(重要的是要记住,这与为该组中的任何用户提供root访问权限完全相同!)。如果要指定其他组,可以使用-g选项启动守护程序。

安装docker还会安装systemd服务单元来运行守护程序。启用它的正确方法(以便它自动重启)是 sudo systemctl enable docker

此时,您还没有包含足够的日志记录来实际说出为什么守护程序没有为您启动 - 如果它是一个选项,我会尝试重新开始,因为我不知道你所搞乱的一切,但如果这不是一个选项,那么journalctl日志可能会解释这个问题(可能是用户' docker'在你取消套接字之后再也无法访问套接字了,但这只是一个猜测)