Docker服务启动失败

我有一个安装了docker的CentOS 7.2虚拟机,docker服务和docker容器以前正常工作。 但在我试图拉一个docker图像时,虚拟机突然关机。 在我重新启动虚拟机后,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 ~]# 

我有类似的问题。 这是我永久固定的方式:

  • 删除/ var / lib / docker中的所有东西。 这将删除正在退出的容器和映像: rm -rf /var/lib/docker
  • 然后configuration守护进程以使用“覆盖”存储驱动程序。 在位于“/ etc / docker /”中的daemon.json中设置以下标志。 如果文件不存在,只需创build它并添加下面的内容: { "graph": "/mnt/docker-data", "storage-driver": "overlay" }

现在再次正常启动docker,所有应该正常工作,并始终

https://docs.docker.com/engine/admin/systemd/#start-automatically-at-system-boot

我有一个类似的问题,这似乎是由以前的安装在/ var / lib / docker留下的cruft引起的。

背景细节:我简单地使用了CentOS extras repo中的docker; 然后,我删除了它,安装了docker repo,并从该repo安装了docker-ce。 这留下了/ var / lib / docker并填充,但不是由docker-ce软件包所有。

下面解决了这个问题:

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