Adicionei um usuário não raiz ao grupo de janelas de encaixe e um outro serviço é executado quando esse usuário não raiz se conecta ao daemon de janela de encaixe. mas o serviço não pode funcionar. Eu faço um exemplo de teste para isso:
root@# systemctl start docker.service
root@# gpasswd -a tiger docker
crie um serviço systemd no tigre:
[Service]
ExecStart=/home/tiger/connectdocker
Restart=always
StartLimitInterval=0
Delegate=true
KillMode=process
[Install]
WantedBy=default.target
o /home/tiger/connectdocker
seguinte:
docker run -itd busybox 2> connectdocker.log
inicie este serviço:
tiger@# systemctl --user enable connectdocker.service
tiger@# systemctl --user start connectdocker.service
e o resultado:
Thu Jul 21 00:59:15 CST 2016
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
mas eu posso conectar ao docker.sock com o tigre:
tiger@# docker run -itd busybox
997e99f959cfd5500319935ec17677775da9d367d203a11efef8b42161c3ee64
para provar isso, altero o /var/run/docker.sock
grupo de janela de encaixe para tigre e o serviço connectdocker pode se conectar ao daemon de janela de encaixe.
mudança /var/run/docker.sock
:
ls -l /run/docker.sock
srw-rw---- 1 root docker 0 Jul 21 00:33 /run/docker.sock
para:
ls -l /run/docker.sock
srw-rw---- 1 root tiger 0 Jul 21 00:33 /run/docker.sock
Respostas:
Você deve usar a
User=
diretiva em seusystemd
serviço.https://www.freedesktop.org/software/systemd/man/systemd.exec.html#User=
Eu também recomendaria mover seu script de um diretório inicial para um caminho padrão, como
/usr/local/bin
algo parecido.Você também deve garantir a ordem do seu
connectdocker.service
, dando a eleAfter=docker.service
eRequires=docker.service
. Como está escrito,connectdocker.service
provavelmente está tentando iniciar na mesma hora que odocker.service
e você precisaria aguardardocker.service
a ativação antes de poder se conectar a ele.https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Requires=
https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Before=
fonte