[英]Dockerd can't start as daemon with error "exec: "docker-containerd": executable file not found in $PATH"
I can't start docker service -- docker 17.12.1 ce on sles12.4 --If anyone can show me what's wrong.我无法在 sles12.4 上启动 docker 服务 -- docker 17.12.1 ce -- 如果有人能告诉我出了什么问题。 It will be appreciated.将不胜感激。 I extracted docker-17.12.1-ce.tgz from download.docker.com and move all to /usr/bin/docker, then I added "/usr/bin/docker" to PATH -- docker:/tmp/installer # printenv|grep PATH... PATH=/usr/bin/docker:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games... docker:/tmp/installer # ls /usr/bin/docker docker docker-containerd docker-containerd-ctr docker-containerd-shim docker-init docker-proxy docker-runc dockerd我从下载中提取了 docker-17.12.1-ce.tgz printenv|grep PATH... PATH=/usr/bin/docker:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin :/usr/bin/X11:/usr/games... docker:/tmp/installer #ls /usr/bin/docker docker docker-containerd docker-containerd-ctr docker-containerd-shim docker-init -runc 码头工人
When I ran "dockered" manually, it looks all right. And then I edited /etc/systemd/system/docker.service --
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/docker/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
And the "systemctl start docker" failed to start docker as daemon.并且“systemctl start docker”无法将 docker 作为守护进程启动。 The "journalctl -xe" reported this error -- “journalctl -xe”报这个错误——
Jan 06 12:00:36 docker dockerd[8884]: time="2022-01-06T12:00:36.970600345-05:00" level=warning msg="[!] DON'T BIND ON ANY IP ADDRESS WITHOUT setting --tlsverify IF YOU DON'T KNOW WHAT YOU'R
Jan 06 12:00:36 docker dockerd[8884]: Failed to connect to containerd: exec: "docker-containerd": executable file not found in $PATH
Jan 06 12:00:36 docker systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Jan 06 12:00:36 docker systemd[1]: Failed to start Docker Application Container Engine.
-- Subject: Unit docker.service has failed
But actually -- the "docker-containerd" IS in the $PATH... and I even copied it to /usr/bin, but still failed with same error. And I searched this -- https://stackoverflow.com/questions/54269687/getting-error-while-running-docker-run-error-response-from-daemon/56990533#56990533--
But it also can't fix this issue by "systemctl restart docker" I really don't know what's the problem.但它也无法通过“systemctl restart docker”解决这个问题,我真的不知道是什么问题。 Please kind help.请善意帮助。 Thanks谢谢
Regards Eisen问候艾森
Find the answer -- that path is not the user's environment variable -- PATH -- it's the system service's environment variable --PATH.找到答案——那个路径不是用户的环境变量——PATH——而是系统服务的环境变量——PATH。 So we need to所以我们需要
1. systemctl edit docker
2. edit the newly created /etc/systemd/system/docker.service.d/override.conf
[Service]
Environment="PATH=$PATH:/usr/bin/docker"
Then it would be OK.然后就好了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.