由于设备映射器错误,无法运行Docker容器

loa*_*age 15 lvm lxc device-mapper docker

我再也无法在Docker中创建和运行新容器了.但同时可以运行以前创建的容器.

当我尝试做这样的事情时:

[user@host ~ ] docker run --name=fpm-5.3 debian:jessie
2014/07/12 07:34:08 Error: Error running DeviceCreate (createSnapDevice) dm_task_run failed
Run Code Online (Sandbox Code Playgroud)

来自docker.log:

2014/07/12 05:57:11 POST /v1.12/containers/create?name=fpm-5.3
[f56fcb6f] +job create(fpm-5.3)
Error running DeviceCreate (createSnapDevice) dm_task_run failed
[f56fcb6f] -job create(fpm-5.3) = ERR (1)
[error] server.go:1025 Error: Error running DeviceCreate (createSnapDevice) dm_task_run failed
[error] server.go:90 HTTP Error: statusCode=500 Error running DeviceCreate (createSnapDevice) dm_task_run failed
Run Code Online (Sandbox Code Playgroud)

dmsetup状态

docker-8:1-1210426-pool: 0 209715200 thin-pool 352 2510/524288 205173/1638400 - ro discard_passdown queue_if_no_space 
Run Code Online (Sandbox Code Playgroud)

但它们在磁盘上有很多可用空间.

dmsetup信息

Name:              docker-8:1-1210426-pool
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE
Open count:        1
Event number:      1
Major, minor:      252, 0
Number of targets: 1
Run Code Online (Sandbox Code Playgroud)

码头工人信息

Containers: 4
Images: 65
Storage Driver: devicemapper
 Pool Name: docker-8:1-1210426-pool
 Data file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
 Data Space Used: 12823.3 Mb
 Data Space Total: 102400.0 Mb
 Metadata Space Used: 9.9 Mb
 Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.2
Kernel Version: 3.14.4
Run Code Online (Sandbox Code Playgroud)

码头版

Client version: 1.0.0
Client API version: 1.12
Go version (client): go1.2.2
Git commit (client): 63fe64c
Server version: 1.0.0
Server API version: 1.12
Go version (server): go1.2.2
Git commit (server): 63fe64c
Run Code Online (Sandbox Code Playgroud)

小智 35

以下是针对Fedora/RHEL系统,因此您需要调整Debian ...

# systemctl stop docker.service
# thin_check /var/lib/docker/devicemapper/devicemapper/metadata
Run Code Online (Sandbox Code Playgroud)

如果没有错误,那么继续:

# thin_check --clear-needs-check-flag /var/lib/docker/devicemapper/devicemapper/metadata
# systemctl start docker.service
# docker run --name=fpm-5.3 debian:jessie
Run Code Online (Sandbox Code Playgroud)

要安装thin_check命令,请运行:

# apt-get install -y thin-provisioning-tools
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用.是什么导致这种情况发生? (3认同)

小智 6

当docker分区填满并且docker在重启后不再启动时,我遇到了这个:

# thin_check /var/lib/docker/devicemapper/devicemapper/metadata
examining superblock
examining devices tree
  missing devices: [0, -]
    bad checksum in btree node
examining mapping tree
  thin device 72 is missing mappings [137494, 137594]
    bad checksum in btree node
  thin device 72 is missing mappings [137721, -]
    bad checksum in btree nodebad checksum in btree nodebad checksum in btree nodebad checksum in btree nodebad checksum in btree nodebad checksum in btree nodebad checksum in btree nodebad checksum in btree nodebad checksum in btree nodebad checksum in btree nodebad checksum in btree nodebad checksum in btree nodebad checksum in btree nodebad checksum in btree node
Run Code Online (Sandbox Code Playgroud)

我能用这个程序修复:

# thin_dump -r /var/lib/docker/devicemapper/devicemapper/metadata -o /tmp/metadata.xml
# thin_restore -i /tmp/metadata.xml -o /var/lib/docker/devicemapper/devicemapper/metadata
Run Code Online (Sandbox Code Playgroud)