我再也无法在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
来自 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
dmsetup状态
docker-8:1-1210426-pool: 0 209715200 thin-pool 352 2510/524288 205173/1638400 - ro discard_passdown queue_if_no_space
但它们在磁盘上有很多可用空间。
dmsetup info
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
码头信息
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
泊坞广告版
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
答案 0 :(得分:33)
以下是Fedora / RHEL系统,所以你需要调整Debian ......
# systemctl stop docker.service
# thin_check /var/lib/docker/devicemapper/devicemapper/metadata
如果没有错误,请继续:
# thin_check --clear-needs-check-flag /var/lib/docker/devicemapper/devicemapper/metadata
# systemctl start docker.service
# docker run --name=fpm-5.3 debian:jessie
要安装thin_check
命令,请运行:
# apt-get install -y thin-provisioning-tools
答案 1 :(得分: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
我能够通过这个程序进行修复:
# 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
答案 2 :(得分:2)
在我们的例子中,只需要启动和停止服务。
根据您的系统,您可以运行:
service docker stop
service docker start
或:
sudo systemctl stop docker.service
sudo systemctl start docker.service
或:
sudo /etc/init.d/docker restart
答案 3 :(得分:1)
我遇到了同样的问题但无法解决问题。 我发现了一些有希望的东西 http://grokbase.com/t/gg/docker-user/1563fzdtm7/docker-docker-runs-out-of-space-when-trying-to-create-a-new-image '默认的docker存储驱动程序为您分配10GB存储块 图片。移至overlayfs并完全避免这种情况。在命令中 启动你的docker守护进程只需添加“-s overlay”'
这解决了我的问题。
答案 4 :(得分:1)
我一直在用Debian 8.2来解决这个问题。 我有其他问题,因为我使用grsec运行4.3.3内核(默认为3.16)。
尽管存在GRSEC问题(mount& chmod拒绝),但我能够运行docker并创建一些图像和容器。
然后,我会重启并且docker会吐出错误。 我运行了thin_check,我发现了这个:
试图修复它,但是thin_restore崩溃了。
我意识到:docker daemon ...正在运行,但无法使用systemctl stop docker.service停止。 它说该服务已停止但守护程序仍在内存中(ps -elf | grep docker)
要解决此问题,我必须更改/ etc / default / docker中的DOCKER_STORAGE_OPTIONS
rm -rf /var/lib/docker
reboot
在启动时,服务启动。 码头信息
按预期显示信息。 建立了一个形象。重新启动,服务再次启动。 我认为基本上停靠的守护进程守护进程无法停止并使用:
杀死它kill <pid>
导致数据文件损坏,因此校验和不匹配。
底线是不要混用和匹配docker.service和docker守护进程。至少在Debian / Ubuntu上。