16

我按照此处文档中提供的步骤为 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

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

$ systemctl daemon-reload
$ service docker start

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

我该如何解决这个问题?

4

7 回答 7

23

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

  • 重新启动系统

(如建议:https ://www.reddit.com/r/archlinux/comments/7ya4ug/installing_docker_on_arch_linux/ )

于 2020-01-21T09:16:53.593 回答
5

对我来说,这是因为 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

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

于 2021-02-23T17:19:05.897 回答
4

找到问题的根源;

systemctl 状态 docker.service

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

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

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

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

于 2021-08-04T13:25:57.510 回答
1

我有同样的问题,只需将“/usr/bin/dockerd”修改为“/usr/sbin/dockerd”,就可以了。您可以先检查 dockerd 路径。

于 2020-09-16T06:14:14.160 回答
0

对我来说,它缺少磁盘空间。重启也有帮助,但我仍然无法构建任何容器。

从 docker 卷中删除一些过时的东西后,我能够继续。

于 2022-01-10T14:30:13.800 回答
0

在我的情况下...主机是 docker swarm 的一部分...但是 IPv6 不再可访问或自动分配给主机...我手动添加 old_IPv6

ip -6 address add 28xx:xxxx:x:x:xx:ebff:fe14:xxx dev ens3x

journalctl -u docker.service 提到:

level=fatal msg="Error starting cluster component: could not find local IP address: dial udp [2xxx:xxx:xxxx:xxx]:2377: connect: network is unreachable"

手动添加 IPv6 后,我能够启动 docker,所以在 docker 运行时,我离开“swarm”并重新启动

docker swarm leave --force

重启后,docker服务照常运行

于 2021-07-07T14:59:51.610 回答
-3

我能够通过禁用firewalld来解决问题

systemctl disable firewalld
systemctl stop firewalld
于 2021-06-09T15:57:01.233 回答