错误信息:Cannot start container xxxxxxxxxxx | Error getting container xxxxxxxxxxxxxxx  from driver devicemapper: Error mounting | invalid argument Error | failed to start containers

现象:4个Docker实例中,三个(基本没在使用)能正常启动,一个(内容最多的那个)不能正常启动。

触发诱因:服务器(Docker宿主机)意外断电。

[root@bogon ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@bogon ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a91dadc56996 b1c89dd2c773 "/bin/auto_service.s 7 weeks ago Exited (137) 23 hours ago mawen
91a542541bb1 b1c89dd2c773 "/bin/auto_service.s 8 weeks ago Exited (128) 28 hours ago rgq
fc0a891e1861 68a34cb5482c "/bin/auto_service.s 3 months ago Exited (0) 28 hours ago songheng
79177df3ddc2 b1c89dd2c773 "/bin/auto_service.s 5 months ago Exited (137) 23 hours ago guozhenya
[root@bogon ~]# docker start 91a542541bb1
Error response from daemon: Cannot start container 91a542541bb1: Error getting container 91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1 from driver devicemapper: Error mounting '/dev/mapper/docker-253:2-13369361-91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1' on '/home/docker/images/devicemapper/mnt/91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1': invalid argument
Error: failed to start containers: [91a542541bb1]
Error response from daemon: Cannot start container 91a542541bb1:
Error getting container 91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1 from driver devicemapper:
Error mounting '/dev/mapper/docker-253:2-13369361-91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1'
on '/home/docker/images/devicemapper/mnt/91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1':
invalid argument Error: failed to start containers: [91a542541bb1]

早期查到的原因及方案,并未解决此问题。

https://access.redhat.com/solutions/1565673

https://segmentfault.com/q/1010000003003635

https://www.lsproc.com/post/docker-faq/

https://blog.csdn.net/wangjia184/article/details/43151041

报错mount错误,无论是用GUI的磁盘管理工具,还是用如下命令行,都会报错。

[root@bogon mapper]# cd /dev/mapper/
[root@bogon mapper]# ll
total
crw-rw----. root root , Oct : control
lrwxrwxrwx. root root Oct : docker-:--91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1 -> ../dm-
lrwxrwxrwx. root root Oct : docker-:--pool -> ../dm-
lrwxrwxrwx. root root Oct : VolGroup-lv_home -> ../dm-
lrwxrwxrwx. root root Oct : VolGroup-lv_root -> ../dm-
lrwxrwxrwx. root root Oct : VolGroup-lv_swap -> ../dm-
[root@bogon mapper]# sudo mkdir -p /mnt/base
[root@bogon mapper]# ll
total
crw-rw----. root root , Oct : control
lrwxrwxrwx. root root Oct : docker-:--91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1 -> ../dm-
lrwxrwxrwx. root root Oct : docker-:--pool -> ../dm-
lrwxrwxrwx. root root Oct : VolGroup-lv_home -> ../dm-
lrwxrwxrwx. root root Oct : VolGroup-lv_root -> ../dm-
lrwxrwxrwx. root root Oct : VolGroup-lv_swap -> ../dm-
[root@bogon mapper]# mount docker-253:2-13369361-91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1 /mnt/base
mount: wrong fs type, bad option, bad superblock on /dev/mapper/docker-253:2-13369361-91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so [root@bogon mapper]# dmesg | tail
EXT4-fs (dm-): bad geometry: block count exceeds size of device ( blocks)
EXT4-fs (dm-): bad geometry: block count exceeds size of device ( blocks)
EXT4-fs (dm-): bad geometry: block count exceeds size of device ( blocks)

device mapper这个驱动的详细解释,很科普的一篇文章:

https://coolshell.cn/articles/17200.html

帖子留言更精彩。

http://www.cnblogs.com/GarfieldEr007/p/5424629.html

结论:DeviceMapper这种东西问题太多了,我们应该把其加入黑名单。

尝试各种方式修复Docker的硬盘文件,结果还是失败了。

[root@bogon mapper]# fsck.ext4 docker-\:--91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1
e2fsck 1.41. (-May-)
The filesystem size (according to the superblock) is blocks
The physical size of the device is blocks
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? yes [root@bogon mapper]# e2fsck docker-\:--91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1
e2fsck 1.41. (-May-)
The filesystem size (according to the superblock) is blocks
The physical size of the device is blocks
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? yes [root@bogon mapper]# resize2fs docker-\:--91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1
resize2fs 1.41. (-May-)
resize2fs: New size smaller than minimum () [root@bogon mapper]# resize2fs docker-\:--91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1
resize2fs 1.41. (-May-)
The containing partition (or device) is only (4k) blocks.
You requested a new size of blocks.

各种尝试的方案:

https://access.redhat.com/solutions/55010

最后只能格式化了:

https://unix.stackexchange.com/questions/115698/fix-ext4-fs-bad-geometry-block-count-exceeds-size-of-device

https://serverfault.com/questions/548237/cant-mount-home-after-trying-to-resize-bad-geometry-block-count-exceeds-size

https://www.linuxquestions.org/questions/linux-hardware-18/size-in-superblock-is-different-from-the-physical-size-of-the-partition-298175/

mke2fs -t ext4 docker-\:--91a542541bb1478834df2c40796fbbbba4a0448063d4401871c7f2b63e5246f1

另外的一些收获:

https://engineeringblog.yelp.com/2016/01/dumb-init-an-init-for-docker.html

https://bugzilla.redhat.com/show_bug.cgi?id=1121736

https://docs.docker.com/install/linux/docker-ee/rhel/#prerequisites

On Red Hat Enterprise Linux, Docker EE supports storage drivers, overlay2 and devicemapper. In Docker EE 17.06.2-ee-5 and higher, overlay2 is the recommended storage driver. The following limitations apply:

  • OverlayFS: If selinux is enabled, the overlay2 storage driver is supported on RHEL 7.4 or higher. If selinux is disabled, overlay2 is supported on RHEL 7.2 or higher with kernel version 3.10.0-693 and higher.

  • Device Mapper: On production systems using devicemapper, you must use direct-lvm mode, which requires one or more dedicated block devices. Fast storage such as solid-state media (SSD) is recommended. Do not start Docker until properly configured per the storage guide.

再分别聊聊Docker storage drivers

执行docker info:

  Win10+Hyper-V

C:\Users\RenGuoQiang>docker info
Containers:
Running:
Paused:
Stopped:
Images:
Server Version: 18.06.-ce
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: d64c661f1d51c48782c9cec8fda7604785f93587
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 4.9.-linuxkit-aufs
Operating System: Docker for Windows
OSType: linux
Architecture: x86_64
CPUs:
Total Memory: .934GiB
Name: linuxkit-00155df70119
ID: TPBZ:PK4T:IR52:NNN6:X4BI:2P4W:QBXD:T5ZH:4UAZ:HCPC:5QZY:HJ23
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors:
Goroutines:
System Time: --17T05::.8681549Z
EventsListeners:
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/
Live Restore Enabled: false

Ubuntu xx:

Storage Driver: aufs

centos6/7

[root@bogon mapper]# docker info
Containers:
Images:
Storage Driver: devicemapper
Pool Name: docker-:--pool
Pool Blocksize: 65.54 kB
Backing Filesystem: extfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 14.24 GB
Data Space Total: 107.4 GB
Data Space Available: 93.13 GB
Metadata Space Used: 26.58 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.121 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Data loop file: /home/docker/images/devicemapper/devicemapper/data
Metadata loop file: /home/docker/images/devicemapper/devicemapper/metadata
Library Version: 1.02.-RHEL6 (--)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.4.-.el6.elrepo.x86_64
Operating System: <unknown>
CPUs:
Total Memory: 31.43 GiB
Name: bogon
ID: KU2E:PTFN:25CJ:234F:LTHQ:7IEB:JMT6:T4NQ:UPB7:BOCV:LKQF:6QKX

https://stackoverflow.com/questions/27800340/error-starting-docker-containers

This is known bug occuring with devicemapper driver only.

Here is the reference of the bug: https://github.com/docker/docker/issues/4036

Best solution is to switch either to aufs or overlayfs drivers.

Note that this question seems to be a duplicate from this one: Docker building fails randomly with Error mounting

用centos就容易被坑。

Analyze a docker instance start failure的更多相关文章

  1. OpenStack集成Docker

    声明:绝对原创,欢迎转载,但请标明出处,谢谢! 最近在做openstack与Docker的集成工作,走了不少弯路,遇到不少问题,不过最终搭建成功了.现在将过程分享出来,以供参考. 一.环境介绍 1.软 ...

  2. jenkins和docker 在docker里运行jenkins

    在docker里运行jenkins server. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd ...

  3. 老司机实战Windows Server Docker:2 docker化现有iis应用的正确姿势

    前言 上一篇老司机实战Windows Server Docker:1 初体验之各种填坑介绍了安装docker服务过程中的一些小坑.这一篇,我们来填一些稍大一些的坑:如何docker化一个现有的iis应 ...

  4. doris 0.9.0版本docker镜像制作与使用

    1. 安装docker 详情请参见本人博客 2. 编译doris 详情请参见doris官网文档 3. 在编译好的doris output文件夹下编写两个Dockerfile 3.1  Dockerfi ...

  5. Docker安全扫描工具之DockerScan

    前言 本篇简单介绍Docker扫描工具DockerScan的安装使用.下述过程是在CentOS 7.6的虚拟机上进行的. [root@localhost ~]# cat /etc/redhat-rel ...

  6. Openstack Nova 源码分析 — 使用 VCDriver 创建 VMware Instance

    目录 目录 前言 流程图 nova-compute vCenter 前言 在上一篇Openstack Nova 源码分析 - Create instances (nova-conductor阶段)中, ...

  7. 温故知新,基于Nexus3和Docker搭建私有Docker Mirrors镜像库

    前言 接着上一篇文章关于基于Nexus3和Docker搭建私有Nuget服务的探索,我们可以进一步利用Nexus3来创建一个私有的Docker镜像库满足内部需求. 仓库类型 hosted: 本地存储, ...

  8. 1Z0-050

    QUESTION 13 View the Exhibit.Examine the following command that is executed for the TRANSPORT table ...

  9. 在NodeJS中配置aws ec2

    获取access key和secret access key           自己账户下有security credentials的选项                      然后点击Acce ...

随机推荐

  1. Js 不支持函数的重载

    Js 不支持函数的重载,可以用相同的名字在同一作用区域,定义两个函数,而不会引起错误,但真正使用的是最后一个. Js 不会验证传递给函数的参数个数是否和函数定义的参数的个数相同,开发人员定义的函数都可 ...

  2. luogu P4146 序列终结者

    嘟嘟嘟 这是一道splay基础题. 最坑的一点是,因为有些节点可能没有左儿子或右儿子,所以必须把t[0].Max赋成-INF! 因为这个调了半天,看来回头复习复习splay是对的-- #include ...

  3. 【转】字符编码笔记:ASCII、Unicode、UTF-8 和 Base64

    1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态(-128~127),这被称为一 ...

  4. Java实现对象的序列化

    什么是对象的序列化? 序列化:把对象转化成字节序列的过程就是对象的序列化:反序列化:把字节序列转化成对象的过程就是对象的反序列化.单看概念比较抽象,但是看代码就会明白. 对象序列化的用途 1.Java ...

  5. Omi框架学习之旅 - 通过对象实例来实现组件通讯 及原理说明

    组件通讯不是讲完了吗(上帝模式还没讲哈),怎么又多了种方式啊. 你484傻,多一种选择不好吗? 其实这个不属于组件通讯啦,只是当父组件实例安装和渲染完毕后,可以执行installed这个方法(默认是空 ...

  6. 7-(基础入门篇)关于STM32底层程序使用说明

    https://www.cnblogs.com/yangfengwu/p/9357695.html 基础教程源码链接请在淘宝介绍中下载,由于链接很容易失效,如果失效请联系卖家,谢谢 https://i ...

  7. LeetCode112:Path Sum

    正常写法 bool HasPathSum(TreeNode root, int sum) { bool ret=false; if(root==null)return false; if(root.l ...

  8. 解决Oracle登录极慢的问题

    原文首发 http://anforen.com/wp/2018/04/oracle_login_slowly/ Oracle用PL/SQL登录,特别慢,3分钟以上,如果以前正常,并且按常见问题排查过, ...

  9. sql字符串累加

    函数 stuff(param1, startIndex, length, param2) 函数说明将param1中自startIndex(SQL中都是从1开始,而非0)起,删除length个字符,然后 ...

  10. cmd命令入门

    第一类: 介绍原生的DOS 首先在cmd命令输入help,看到如下图的结果,这里展示的原生的DOS命令. 这里列出了一些命令,可以自己试试的玩.一般看到一个命令后,如果没有说明文档,你就尝试的在其命令 ...