docker.socket:在保护 docker 守护进程套接字后失败,结果为“service-start-limit-hit”

Pax*_*Pax 11 docker docker-daemon

我按照此处文档中提供的步骤为 docker api 添加 tls 安全性。证书位于~/.docker/以及/etc/ docker /ssl/文件夹中。我将override.conf添加到/etc/systemd/system/docker.service.d/与内容

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem
Run Code Online (Sandbox Code Playgroud)

然后,我使用了 daemon-reload 和 docker start

$ systemctl daemon-reload
$ service docker start
Run Code Online (Sandbox Code Playgroud)

journalctl -xe 中的错误是:

-- Unit docker.socket has finished starting up.
-- 
-- The start-up result is RESULT.
Jan 15 21:43:24 cynicalplyaground systemd[1]: docker.service: Start request repeated too quickly.
Jan 15 21:43:24 cynicalplyaground systemd[1]: docker.service: Failed with result 'exit-code'.
Jan 15 21:43:24 cynicalplyaground systemd[1]: Failed to start Docker Application Container Engine.
-- Subject: Unit docker.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- Unit docker.service has failed.
-- 
-- The result is RESULT.
Jan 15 21:43:24 cynicalplyaground systemd[1]: docker.socket: Failed with result 'service-start-limit-hit'.
Jan 15 21:45:01 cynicalplyaground CRON[12768]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 15 21:45:01 cynicalplyaground CRON[12769]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Jan 15 21:45:01 cynicalplyaground CRON[12768]: pam_unix(cron:session): session closed for user root
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

eli*_*eli 16

在本案例中,在最新的 manjaro 更新 (2020-01-20) 之后发生了同样的错误。
尝试按照其他情况下的建议更改 systemd docker 服务,但我恢复了这些更改,最后通过以下方式解决了

  • 重新启动系统

(就像这里的建议:https : //www.reddit.com/r/archlinux/comments/7ya4ug/installing_docker_on_arch_linux/


jim*_*jim 14

找到问题的根源;

systemctl 状态 docker.service

有这个: /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

尝试运行该命令时,它抱怨无法使用文件 /etc/docker/daemon.json: EOF 配置 Docker 守护进程

ls -l /etc/docker/daemon.json -rw-r--r-- 1 root root 0 Jul 30 10:32 /etc/docker/daemon.json

请注意,JSON 文件是空的。删除它。

  • 同样在这里。运行“dockerd --debug”揭示了“/etc/docker/daemon.json”的格式问题。 (4认同)

fre*_*727 11

对我来说,这是因为 docker 安装程序使用 iptables 进行 nat。不幸的是 Debian 使用 nftables。您可以将条目转换为 nftables 或仅设置 Debian 以使用旧版 iptables。

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
Run Code Online (Sandbox Code Playgroud)

dockerd,在切换到 iptables-legacy 后应该可以正常启动。