我按照文档here中提供的步骤为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
如何解决此问题?
8条答案
按热度按时间06odsfpq1#
在当前情况下,在最新manjaro更新(2020-01-20)后发生了相同的错误。
尝试更改systemd docker服务,如在其他情况下所建议的那样,但我恢复了这些更改,最后这是通过解决的:
(like建议如下:(第10页)
5jvtdoz22#
找到问题的根源;
systemctl状态停靠服务
/usr/bin/dockerd -H//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
尝试运行该命令时,它会抱怨无法使用文件/etc/docker/daemon.json配置Docker守护进程:文件结束
我的意思是说,如果你是一个超级用户,那么你就可以把你的超级用户设置为超级用户了。
请注意,JSON文件为空。请删除它。
ljsrvy3e3#
对我来说,这是因为docker安装程序使用iptables作为nat。不幸的是Debian使用nftables。你可以将条目转换为nftables,或者只是设置Debian使用传统的iptables。
dockerd,切换到iptables-legacy后应该可以正常启动。
3mpgtkmj4#
我有同样的问题,只是修改“/usr/bin/dockerd”为“/usr/sbin/dockerd”,然后它的工作。你可以先检查dockerd路径。
f0ofjuux5#
在我的例子中...主机是Docker群的一部分...但IPv6不再可访问或自动分配给主机...我手动添加了old_IPv6
日志ctl-u Docker.服务提到:
手动添加IPv6后,我能够启动Docker,所以随着Docker的运行,我离开“群”并重新启动
重新启动后,Docker服务照常运行
pkwftd7m6#
对我来说,这是缺少磁盘空间。重新启动也有帮助,但我仍然无法建立任何容器。
在修剪了一些过时的东西从码头卷我能够继续。
m2xkgtsf7#
我在Ubuntu上也遇到过类似的问题,因为我在
/etc/docker/daemon.json
文件中添加了hosts
选项。这没什么,但是对于使用systemd
的系统,它可能会导致启动时传递给dockerd
的参数发生冲突。解决方案是删除
/etc/docker/daemon.json
的hosts
条目,并在文件/etc/systemd/system/docker.service.d/options.conf
上设置此配置。然后,重新启动服务。
您可以通过运行
docker info
来检查您的更改是否已应用。此外,您可以在Docker服务状态中注意到Drop-In
字段正在使用创建的options.conf
,并且dockerd
是使用指定的主机列表执行的。参考文献:
tez616oj8#
我通过关闭防火墙解决了这个问题