Не удается запустить контейнер 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
С докер.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
версия docker
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
5 ответов
следующее для системы 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
установить выполните:
# apt-get install -y thin-provisioning-tools
когда раздел 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
В нашем случае просто нужно начать и остановить службу.
в зависимости от вашей системы вы можете запустить:
service docker stop
service docker start
или:
sudo systemctl stop docker.service
sudo systemctl start docker.service
или:
sudo /etc/init.d/docker restart
У меня была такая же проблема, и я не смог ее исправить. Я нашел кое-что многообещающее в: 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"'
это исправило мою проблему.
я боролся с этой проблемой с Debian 8.2. У меня были другие проблемы, потому что я запускаю ядро 4.3.3 (по умолчанию 3.16) с grsec.
несмотря на проблемы GRSEC (mount & chmod denied), я смог запустить docker и создать некоторый образ и контейнер.
затем я перезагрузился бы, и docker просто выплюнул бы ошибку. Я побежал thin_check и нашел следующее:
- метаданные были в порядке (я не использую тонкий пул прямо сейчас, так как докер продолжает говорить что мой тонкий бассейн-это не тонкий бассейн...)
- данные были повреждены.
пытался восстановить его, но thin_restore аварий.
Я понял, что: демон докера ... работал, но не может быть остановлен с помощью systemctl stop docker.услуга. В нем говорится, что служба остановлена, но демон все еще находится в памяти (PS-elf | grep docker)
чтобы устранить проблему, мне пришлось изменить DOCKER_STORAGE_OPTIONS в /etc/default / docker
rm -rf /var/lib/docker
reboot
At время загрузки, служба запускается. docker info
показывает информацию, как ожидалось. Создал образ. Перезагрузившись, сервис снова запускается нормально. Я думаю, что в основном демон docker не может быть остановлен и убивает его с помощью:
kill <pid>
приводит к повреждению файла данных, и поэтому контрольная сумма не будет совпадать.
нижняя строка-не смешивать и сопоставлять docker.демон службы и docker. По крайней мере на Debian и Ubuntu.