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

rpppsulh  于 2022-11-22  发布在  Docker
关注(0)|答案(8)|浏览(859)

我按照文档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

如何解决此问题?

06odsfpq

06odsfpq1#

在当前情况下,在最新manjaro更新(2020-01-20)后发生了相同的错误。
尝试更改systemd docker服务,如在其他情况下所建议的那样,但我恢复了这些更改,最后这是通过解决的:

  • 系统的重新启动

(like建议如下:(第10页)

5jvtdoz2

5jvtdoz22#

找到问题的根源;
systemctl状态停靠服务
/usr/bin/dockerd -H//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
尝试运行该命令时,它会抱怨无法使用文件/etc/docker/daemon.json配置Docker守护进程:文件结束
我的意思是说,如果你是一个超级用户,那么你就可以把你的超级用户设置为超级用户了。
请注意,JSON文件为空。请删除它。

ljsrvy3e

ljsrvy3e3#

对我来说,这是因为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后应该可以正常启动。

3mpgtkmj

3mpgtkmj4#

我有同样的问题,只是修改“/usr/bin/dockerd”为“/usr/sbin/dockerd”,然后它的工作。你可以先检查dockerd路径。

f0ofjuux

f0ofjuux5#

在我的例子中...主机是Docker群的一部分...但IPv6不再可访问或自动分配给主机...我手动添加了old_IPv6

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

日志ctl-u Docker.服务提到:

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的运行,我离开“群”并重新启动

docker swarm leave --force

重新启动后,Docker服务照常运行

pkwftd7m

pkwftd7m6#

对我来说,这是缺少磁盘空间。重新启动也有帮助,但我仍然无法建立任何容器。
在修剪了一些过时的东西从码头卷我能够继续。

m2xkgtsf

m2xkgtsf7#

我在Ubuntu上也遇到过类似的问题,因为我在/etc/docker/daemon.json文件中添加了hosts选项。这没什么,但是对于使用systemd的系统,它可能会导致启动时传递给dockerd的参数发生冲突。
解决方案是删除/etc/docker/daemon.jsonhosts条目,并在文件/etc/systemd/system/docker.service.d/options.conf上设置此配置。

$ cat /etc/systemd/system/docker.service.d/options.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://

然后,重新启动服务。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

您可以通过运行docker info来检查您的更改是否已应用。此外,您可以在Docker服务状态中注意到Drop-In字段正在使用创建的options.conf,并且dockerd是使用指定的主机列表执行的。

$ systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset>
    Drop-In: /etc/systemd/system/docker.service.d
             └─options.conf
     Active: active (running) since Fri 2022-11-18 01:02:18 EST; 1h 50min ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 1111 (dockerd)
      Tasks: 18
     Memory: 58.5M
        CPU: 1.294s
     CGroup: /system.slice/docker.service
             └─1111 /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://

参考文献:

tez616oj

tez616oj8#

我通过关闭防火墙解决了这个问题

systemctl disable firewalld
systemctl stop firewalld

相关问题