Docker:如何修复“docker.service 的作业失败,因为控制进程退出并显示错误代码”

Tâm*_*iro 30 docker

我正在尝试在 Manjaro 中使用 docker(我的内核版本是 4.19)但它不起作用。

运行后,sudo pamac install docker我运行sudo systemctl start docker.service并收到此消息:

Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

Run Code Online (Sandbox Code Playgroud)

所以sudo systemctl status docker.service返回:

? docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Mon 2019-04-29 12:28:44 -03; 39s ago
     Docs: https://docs.docker.com
  Process: 17769 ExecStart=/usr/bin/dockerd -H fd:// (code=exited, status=1/FAILURE)
 Main PID: 17769 (code=exited, status=1/FAILURE)

abr 29 12:28:44 tamer-pc systemd[1]: docker.service: Service RestartSec=100ms expired, scheduling restart.
abr 29 12:28:44 tamer-pc systemd[1]: docker.service: Scheduled restart job, restart counter is at 3.
abr 29 12:28:44 tamer-pc systemd[1]: Stopped Docker Application Container Engine.
abr 29 12:28:44 tamer-pc systemd[1]: docker.service: Start request repeated too quickly.
abr 29 12:28:44 tamer-pc systemd[1]: docker.service: Failed with result 'exit-code'.
abr 29 12:28:44 tamer-pc systemd[1]: Failed to start Docker Application Container Engine.

Run Code Online (Sandbox Code Playgroud)

journalctl -xe返回:

-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- The unit docker.service has entered the 'failed' state with result 'exit-code'.
abr 29 12:28:44 tamer-pc systemd[1]: Failed to start Docker Application Container Engine.
-- Subject: A unidade docker.service falhou
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- A unidade docker.service falhou.
-- 
-- O resultado é failed.
abr 29 12:28:44 tamer-pc systemd[1]: docker.socket: Failed with result 'service-start-limit-hit'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- The unit docker.socket has entered the 'failed' state with result 'service-start-limit-hit'.
abr 29 12:29:02 tamer-pc dbus-daemon[650]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='>
abr 29 12:29:02 tamer-pc dbus-daemon[650]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.resolve1.>
abr 29 12:29:24 tamer-pc sudo[17879]:    tamer : TTY=pts/0 ; PWD=/etc/docker ; USER=root ; COMMAND=/usr/bin/systemctl stat>
abr 29 12:29:24 tamer-pc sudo[17879]: pam_unix(sudo:session): session opened for user root by (uid=0)
abr 29 12:29:24 tamer-pc sudo[17879]: pam_unix(sudo:session): session closed for user root
lines 1703-1725/1725 (END)

Run Code Online (Sandbox Code Playgroud)

我正在寻找两天的解决方案,但无论我读到什么,似乎都与我的问题不完全一样。

Tâm*_*iro 40

我真的不知道发生了什么,但我sudo dockerd --debug像 Zeitounator 一样运行,重新启动我的电脑,docker 完美运行。

  • 这确实很奇怪,但重新启动会产生奇迹。我按照官方手册在 Ubuntu 18.04 上安装了 docker。 (4认同)
  • 对我来说,错误是: ```无法启动守护进程:初始化网络控制器时出错:获取控制器实例时出错:无法创建 NAT 链 DOCKER:iptables 失败:iptables -t nat -N DOCKER:modprobe:致命:找不到模块 ip_tables在目录 /lib/modules/4.15.0-144-generic ``` 中,修复是 ```apt-get install -y linux-modules-4.15.0-144-generic``` (3认同)
  • 运行“dockerd --debug”揭示了“/etc/docker/daemon.json”的格式问题。 (3认同)
  • 是的,对我来说同样有效。重启成功了!! (2认同)

小智 12

我遇到了同样的问题,但我遵循了@Zeitounator 的建议,我运行此命令sudo dockerd --debug来查看问题。它显示此消息:

您的 Linux 内核版本 2.6.32-042stab138.1 不支持运行 docker。请将您的内核升级到 3.10.0 或更新版本。

我已经更新了我的内核,它运行良好。希望对你有帮助!


Pro*_*ton 9

我在本地机器上设置Kubernetes时遇到了类似的问题:

当我尝试设置Docker以使用 OverlayFS 存储驱动程序时出现错误。

我运行了以下命令:

sudo systemctl stop docker
cp -au /var/lib/docker /var/lib/docker.bk
Run Code Online (Sandbox Code Playgroud)

然后当我尝试使用以下命令再次启动 docker 时:

sudo systemctl start docker
Run Code Online (Sandbox Code Playgroud)

它抛出错误:

Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
Run Code Online (Sandbox Code Playgroud)

这是我解决它的方法

我运行下面的命令来检查以下Tâmer Pinheiro 回答的问题

sudo dockerd --debug
Run Code Online (Sandbox Code Playgroud)

它给了我以下信息:

INFO[2020-09-02T11:46:15.272833297Z] Starting up                                  
DEBU[2020-09-02T11:46:15.273547501Z] Listener created for HTTP on unix (/var/run/docker.sock) 
failed to start daemon: Unable to get the TempDir under /var/lib/docker: mkdir
/var/lib/docker/tmp: no space left on device
Run Code Online (Sandbox Code Playgroud)

我还检查了服务器的磁盘空间:

df -h
Run Code Online (Sandbox Code Playgroud)

这表明驱动器上没有剩余空间 ( /dev/sda1 filesystem):

Filesystem      Size  Used Avail Use% Mounted on
udev            2.0G     0  2.0G   0% /dev
tmpfs           396M   12M  384M   4% /run
/dev/sda1       9.8G  9.8G     0 100% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock

tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
tmpfs           396M     0  396M   0% /run/user/1000
Run Code Online (Sandbox Code Playgroud)

我意识到这个问题与设备上没有剩余空间有关。

我必须运行以下命令来为文件系统清除一些空间:

sudo find /var/log -type f -delete
sudo rm -rf /var/cache/apt/*
sudo apt clean all
Run Code Online (Sandbox Code Playgroud)

最后,我删除了该/var/lib/docker.bk文件,因为它对于服务器的9.8GB 文件系统来说太大了:

sudo rm -rf /var/lib/docker.bk
Run Code Online (Sandbox Code Playgroud)

这次当我运行命令时:

sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)

一切正常。

就这样。

我希望这有帮助


小智 8

就我而言,它是“dns”数组/列表中 /etc/docker/daemon.json 中的悬空逗号。我只是删除了最后一个条目后的逗号,它就起作用了。


小智 8

面对同样的问题三步走:

1:docker --debug 确定问题是网络问题:无法对 NAT 链进行编程:ZONE_CONFLICT:“docker0”已绑定到区域

2:为了解决这个问题,谷歌搜索并找到了运行命令

firewall-cmd --zone=trusted --remove-interface=docker0
Run Code Online (Sandbox Code Playgroud)

3:systemctl start docker


Agh*_*ein 5

对我来说,停止 VPN 解决了​​问题


小智 5

我的/etc/docker/daemon.json.