【问题标题】:Docker service start failedDocker 服务启动失败
【发布时间】:2016-12-30 06:01:17
【问题描述】:

我有一个安装了 Docker 的 CentOS 7.2 VM。 Docker 服务和 Docker 容器之前工作正常。但是当我试图拉一个 docker 镜像时,VM 突然关闭了。重启VM后,Docker服务无法启动:

[root@AY13091717064020986bZ ~]# service docker start
Redirecting to /bin/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.

systemctl status docker.service 输出:

[root@AY13091717064020986bZ ~]# 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 Tue 2016-08-23 19:11:19 CST; 13min ago
     Docs: http://docs.docker.com
  Process: 1404 ExecStart=/usr/bin/docker-current daemon --exec-opt native.cgroupdriver=systemd $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY (code=exited, status=1/FAILURE)
 Main PID: 1404 (code=exited, status=1/FAILURE)

Aug 23 19:11:17 AY13091717064020986bZ systemd[1]: Starting Docker Application Container Engine...
Aug 23 19:11:19 AY13091717064020986bZ docker-current[1404]: time="2016-08-23T19:11:19.448828158+08:00" level=warning msg="devmapper: Usage of loopback devices is strongly discou...v section."
Aug 23 19:11:19 AY13091717064020986bZ docker-current[1404]: time="2016-08-23T19:11:19.511103592+08:00" level=error msg="[graphdriver] prior storage driver \"devicemapper\" faile...t status 2"
Aug 23 19:11:19 AY13091717064020986bZ docker-current[1404]: time="2016-08-23T19:11:19.511196844+08:00" level=fatal msg="Error starting daemon: error initializing graphdriver: de...t status 2"
Aug 23 19:11:19 AY13091717064020986bZ systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Aug 23 19:11:19 AY13091717064020986bZ systemd[1]: Failed to start Docker Application Container Engine.
Aug 23 19:11:19 AY13091717064020986bZ systemd[1]: Unit docker.service entered failed state.
Aug 23 19:11:19 AY13091717064020986bZ systemd[1]: docker.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

journalctl -xe”输出:

[root@AY13091717064020986bZ ~]# journalctl -xe
Aug 23 19:11:19 AY13091717064020986bZ kernel: device-mapper: block manager: btree_node validator check failed for block 146
Aug 23 19:11:19 AY13091717064020986bZ kernel: device-mapper: btree spine: node_check failed: csum 1600702373 != wanted 1600827965
Aug 23 19:11:19 AY13091717064020986bZ kernel: device-mapper: block manager: btree_node validator check failed for block 146
Aug 23 19:11:19 AY13091717064020986bZ kernel: Buffer I/O error on device dm-1, logical block 2621424
Aug 23 19:11:19 AY13091717064020986bZ docker-current[1404]: time="2016-08-23T19:11:19.511103592+08:00" level=error msg="[graphdriver] prior storage driver \"devicemapper\" failed: devmapper:
Aug 23 19:11:19 AY13091717064020986bZ docker-current[1404]: time="2016-08-23T19:11:19.511196844+08:00" level=fatal msg="Error starting daemon: error initializing graphdriver: devmapper: Base
Aug 23 19:11:19 AY13091717064020986bZ systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Aug 23 19:11:19 AY13091717064020986bZ systemd[1]: Failed to start Docker Application Container Engine.
-- Subject: Unit docker.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit docker.service has failed.
--
-- The result is failed.
Aug 23 19:11:19 AY13091717064020986bZ systemd[1]: Unit docker.service entered failed state.
Aug 23 19:11:19 AY13091717064020986bZ systemd[1]: docker.service failed.
Aug 23 19:11:19 AY13091717064020986bZ polkitd[1014]: Unregistered Authentication Agent for unix-process:1370:16052 (system bus name :1.22, object path /org/freedesktop/PolicyKit1/Authenticati
Aug 23 19:23:43 AY13091717064020986bZ systemd[1]: Starting Cleanup of Temporary Directories...
-- Subject: Unit systemd-tmpfiles-clean.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit systemd-tmpfiles-clean.service has begun starting up.
Aug 23 19:23:43 AY13091717064020986bZ systemd[1]: Started Cleanup of Temporary Directories.
-- Subject: Unit systemd-tmpfiles-clean.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit systemd-tmpfiles-clean.service has finished starting up.
--
-- The start-up result is done.

Docker 版本:

[root@AY13091717064020986bZ ~]# docker version
Client:
 Version:         1.10.3
 API version:     1.22
 Package version: docker-common-1.10.3-46.el7.centos.10.x86_64
 Go version:      go1.6.3
 Git commit:      d381c64-unsupported
 Built:           Thu Aug  4 13:21:17 2016
 OS/Arch:         linux/amd64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Linux内核版本:

[root@AY13091717064020986bZ ~]# uname -a
Linux AY13091717064020986bZ 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@AY13091717064020986bZ ~]#

CentOS 版本:

[root@AY13091717064020986bZ ~]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID:    CentOS
Description:    CentOS Linux release 7.2.1511 (Core)
Release:    7.2.1511
Codename:    Core
[root@AY13091717064020986bZ ~]#

【问题讨论】:

  • 是否尝试重新安装 docker?
  • 能否尝试重启服务-service docker restart?
  • 第一次没有出现这个问题,我删除了/var/lib/docker并重新拉取了所有图像,第一次出现时它工作正常。我不能总是这样做,我想找到一种方法来最终解决它。 @Bhavesh : restart 的输出与 start 相同。

标签: docker centos7


【解决方案1】:

只有这个命令帮助我得到了这个错误的原因:

dockerd

在我看到的输出中:您的 Linux 内核版本 2.6.32-042stab127.2 不支持运行 docker。请将您的内核升级到 3.10.0 或更高版本。

【讨论】:

  • 了解守护程序问题的好方法。对我来说这是一个权限问题
  • 谢谢,就我而言,我必须这样做sudo service docker start
  • 最佳答案。就我而言,没有安装 iptables,这就是 docker 无法启动的原因。
  • 这篇文章回答了更广泛的 docker 启动问题。对我来说,这是一个配置错误的网桥接口。非常感谢。
【解决方案2】:

我遇到了类似的问题。这就是我永久修复它的方式:

  • 删除/var/lib/docker 中的所有内容。这将删除现有的容器和图像:
rm -rf /var/lib/docker
  • 然后配置您的守护程序以使用“覆盖”存储驱动程序。在/etc/docker/daemon.json 中设置以下标志。如果文件不存在,只需创建它,然后添加以下内容:
{
    "graph": "/mnt/docker-data",
    "storage-driver": "overlay"
}

现在再次正常启动 Docker,一切都应该正常工作。

Start automatically at system boot

【讨论】:

  • 优于overlay的是overlay2。
  • 在我根据 dockers 自己的页面向 /etc/docker/daemon.json 添加了一些条目之后,事情对我停止了工作,我把它们全部撕掉,然后放 { "data-root": "/mnt /docker-data", "storage-driver": "overlay" }
  • 它解决了我的问题,但我想知道这里有什么魔力?为什么要删除 /var/lib/docker work 中的所有内容?
  • 就我而言,/etc/docker/daemon.json 的错误 json 格式会导致此问题。
  • 多么糟糕的解决方案:清理所有 docker 镜像和容器!!!
【解决方案3】:

你只需要重启服务器并检查你的daemon.json文件是否正确。

通过删除 /etc/docker,您将丢失所有图像和数据。

你可以检查日志

journalctl -u docker.services

重启服务器

须藤重启

systemctl daemon-reload && systemctl 启用 docker && systemctl 启动泊坞窗

这对我有用。

【讨论】:

    【解决方案4】:

    我在衍生拱门时遇到了类似的问题。重启后一切顺利。

    sudo shutdown -r now
    

    然后用类似的东西检查

    systemctl status docker
    

    【讨论】:

    • 什么是“arch衍生”
    • 也许是我的英语,我的意思是基于 Arch,它是 Antergos。就像 Debian 上的 Ubuntu。顺便说一句,我记得当我找到正确的解决方案时,我简直不敢相信它是如此简单,只是在浪费时间。
    • 重启帮我解决了
    • 重启也为我解决了这个问题,就我而言,这是因为我在上次系统升级后没有重启。
    【解决方案5】:

    您只需要删除容器文件夹并重新启动

    sudo rm /var/lib/docker/containers/ -rf && sudo reboot
    

    【讨论】:

      【解决方案6】:

      在我的情况下,它是空的 daemon.json 文件,删除这个文件对我来说是固定的:

      sudo rm -rf /etc/docker/daemon.json
      sudo systemctl start docker
      

      【讨论】:

        【解决方案7】:

        步骤 1。使用 'dockerd' 命令检查确切原因

        [root@c7 docker]# dockerd
        INFO[2020-06-03T11:27:50.293740882+05:30] Starting up
        INFO[2020-06-03T11:27:50.298500541+05:30] parsed scheme: "unix"                         module=grpc
        INFO[2020-06-03T11:27:50.298535150+05:30] scheme "unix" not registered, fallback to default scheme  module=grpc
        INFO[2020-06-03T11:27:50.298568308+05:30] ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock 0  <nil>}] <nil>}  module=grpc
        INFO[2020-06-03T11:27:50.298582671+05:30] ClientConn switching balancer to "pick_first"  module=grpc
        INFO[2020-06-03T11:27:50.305144487+05:30] parsed scheme: "unix"                         module=grpc
        INFO[2020-06-03T11:27:50.305193838+05:30] scheme "unix" not registered, fallback to default scheme  module=grpc
        INFO[2020-06-03T11:27:50.305239948+05:30] ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock 0  <nil>}] <nil>}  module=grpc
        INFO[2020-06-03T11:27:50.305254274+05:30] ClientConn switching balancer to "pick_first"  module=grpc
        failed to start daemon: error initializing graphdriver: /var/lib/docker contains several valid graphdrivers: overlay2, devicemapper; Please cleanup or explicitly choose storage driver (-s <DRIVER>)
        

        Step2:删除overlaydevicemapper 存储。应该只存在 1 个存储空间

        [root@c7 docker]# rm -rf devicemapper
        

        Step3: 现在启动 docker [root@c7 docker]# systemctl start docker

        第 4 步:如果您遇到以下错误

        [root@c7 docker]# docker container ls
        

        无法连接到位于 unix:///var/run/docker.sock 的 Docker 守护程序。 docker 守护进程是否正在运行?

        Step5:删除以下文件并重启docker

        [root@c7 docker]# rm -rf /var/run/docker.pid
        [root@c7 docker]# systemctl restart docker
        

        第 6 步:您将取回图像和正在运行的容器

        【讨论】:

          【解决方案8】:

          我遇到了类似的问题。这就是我永久修复它的方式:

          mv etc/docker/daemon.json daemon.conf
          systemctl daemon-reload
          service docker restart
          

          【讨论】:

            【解决方案9】:

            我遇到了类似的问题,这似乎是由以前安装的/var/lib/docker 中留下的垃圾造成的。

            背景详情:我曾简要使用过 CentOS extras 存储库中的 Docker;然后我删除了它,安装了 Docker 存储库,并从该存储库安装了 docker-ce。这将 /var/lib/docker 留在后面并填充,但不归 docker-ce 包所有。

            以下解决了此问题:

            • rpm -e docker-ce
            • rm -f /var/lib/docker
            • yum install docker-ce

            【讨论】:

              【解决方案10】:

              我刚刚删除了 /var/lib/docker 下的所有文件夹并重新启动了服务器,这解决了 rhel 7.7 系统中的相同问题

              发生这种情况是因为我想创建一个文件系统以安装在分配图像的 /var/lib/docker 上。

              ****注意它也会删除所有图像,如果你想保留任何图像,只需发出 docker save 命令

              【讨论】:

                【解决方案11】:

                dockerd 拯救了我的一天,它显示 iptables/firewalld 丢失。 安装相同,它就像魅力一样。

                【讨论】:

                • 其他几个答案已经建议使用dockerd。请不要将重复的答案和/或 cmets 发布到其他答案。
                • 赞成,因为我首先看到了这个答案,它帮助了我(是问题 - 未安装 iptables)
                【解决方案12】:

                我使用的是 docker desktop,在设置中我删除了 WSL_update_x64 中的所有内容。它以前没有安装。所以安装它后,我从设置中删除了文件并重新启动。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2021-06-18
                  • 2017-07-22
                  • 2013-01-12
                  • 2017-08-08
                  • 2020-05-23
                  • 2021-11-30
                  • 2016-07-04
                  相关资源
                  最近更新 更多