Saya menambahkan pengguna non-root di grup buruh pelabuhan, dan layanan lain berjalan karena pengguna non-root ini terhubung ke daemon buruh pelabuhan. tetapi layanan tidak dapat bekerja. Saya melakukan contoh uji untuk ini:
root@# systemctl start docker.service
root@# gpasswd -a tiger docker
buat layanan systemd di harimau:
[Service]
ExecStart=/home/tiger/connectdocker
Restart=always
StartLimitInterval=0
Delegate=true
KillMode=process
[Install]
WantedBy=default.target
yang /home/tiger/connectdocker
seperti ini:
docker run -itd busybox 2> connectdocker.log
mulai layanan ini:
tiger@# systemctl --user enable connectdocker.service
tiger@# systemctl --user start connectdocker.service
dan hasilnya:
Thu Jul 21 00:59:15 CST 2016
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
tapi saya bisa terhubung ke docker.sock dengan harimau:
tiger@# docker run -itd busybox
997e99f959cfd5500319935ec17677775da9d367d203a11efef8b42161c3ee64
untuk membuktikan itu, saya mengubah /var/run/docker.sock
grup dari buruh pelabuhan ke harimau, dan layanan connectdocker dapat terhubung ke daemon buruh pelabuhan.
ubah /var/run/docker.sock
:
ls -l /run/docker.sock
srw-rw---- 1 root docker 0 Jul 21 00:33 /run/docker.sock
untuk:
ls -l /run/docker.sock
srw-rw---- 1 root tiger 0 Jul 21 00:33 /run/docker.sock
Jawaban:
Anda harus menggunakan
User=
arahan dalamsystemd
layanan Anda .https://www.freedesktop.org/software/systemd/man/systemd.exec.html#User=
Saya juga merekomendasikan untuk memindahkan skrip Anda dari direktori home ke jalur standar, suka
/usr/local/bin
atau semacamnya.Anda juga harus memastikan pemesanan Anda
connectdocker.service
dengan memberikannyaAfter=docker.service
danRequires=docker.service
. Seperti yang tertulis,connectdocker.service
mungkin mencoba untuk memulai sekitar waktu yang sama dengandocker.service
, dan Anda harus menunggu untukdocker.service
bangun sebelum Anda dapat terhubung.https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Requires=
https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Before=
sumber