web-dev-qa-db-fra.com

Impossible d'exécuter le mappeur de périphérique dû au conteneur Docker

Je ne peux plus créer et exécuter de nouveaux conteneurs dans Docker. Mais dans le même temps, un peut exécuter des conteneurs créés précédemment. 

Quand j'essaie de faire quelque chose comme ça:

[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

De 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

statut dmsetup

docker-8:1-1210426-pool: 0 209715200 thin-pool 352 2510/524288 205173/1638400 - ro discard_passdown queue_if_no_space 

Mais il y a beaucoup d'espace libre sur le disque.

info 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

docker info  

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

version de 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
13
loadaverage

Ce qui suit concerne un système Fedora/RHEL. Vous devrez donc vous adapter à Debian ...

# systemctl stop docker.service
# thin_check /var/lib/docker/devicemapper/devicemapper/metadata

S'il n'y a pas d'erreur, continuez avec:

# thin_check --clear-needs-check-flag /var/lib/docker/devicemapper/devicemapper/metadata
# systemctl start docker.service
# docker run --name=fpm-5.3 debian:jessie

Pour installer la commande thin_check, exécutez:

# apt-get install -y thin-provisioning-tools
33
Kazen

Lorsque la partition du menu fixe est remplie et que le menu fixe ne démarre plus après le redémarrage, j'ai rencontré ceci:

# 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

J'ai pu réparer avec cette procédure:

# 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
6
scottc

Dans notre cas, il suffit de démarrer et d’arrêter le service.

Selon votre système, vous pouvez exécuter:

service docker stop
service docker start

ou:

Sudo systemctl stop docker.service
Sudo systemctl start docker.service

ou:

Sudo /etc/init.d/docker restart
2
Mohammed Hakimi

Je me suis battu contre ce problème avec Debian 8.2. J'ai eu d'autres problèmes parce que je lance un noyau 4.3.3 (la valeur par défaut est 3.16) avec grsec.

Malgré les problèmes GRSEC (mount & chmod refusé), j'ai pu exécuter docker et créer une image et un conteneur.

Ensuite, je redémarrais et docker crachait simplement l'erreur. J'ai lancé thin_check et j'ai découvert ceci:

  • les métadonnées étaient bonnes (je n'utilise pas de pool mince en ce moment, car docker continue de me dire que mon pool fin n'est pas un pool fin ...)
  • les données étaient corrompues.

Essayé de le réparer mais thin_restore se bloque.

J'ai compris que: le démon docker ... fonctionnait mais ne pouvait pas être arrêté avec systemctl stop docker.service. Il indique que le service est arrêté mais que le démon est toujours en mémoire (ps -elf | grep docker )

Pour résoudre le problème, je devais changer DOCKER_STORAGE_OPTIONS dans/etc/default/docker

rm -rf /var/lib/docker
reboot

Au démarrage, le service démarre. Docker info

Affiche les informations comme prévu. Construit une image. Redémarré, le service redémarre correctement. Je pense qu’en principe, le démon docker ne peut pas être arrêté et le tuer avec:

kill <pid>

Provoque la corruption du fichier de données et par conséquent, la somme de contrôle ne correspond pas.

La ligne du bas est de ne pas mélanger et assortir docker.service et le démon docker. Au moins sur Debian/Ubuntu.

1
E.T

J'ai eu le même problème et je n'ai pas pu le résoudre. J'ai trouvé quelque chose de prometteur à: http://grokbase.com/t/gg/docker-user/1563fzdtm7/ docker-docker-runs-out-of-space-when-essayer-de-créer-une-nouvelle-image 'Le pilote de stockage de docker par défaut alloue des blocs de stockage de 10 Go pour votre images. Déplacez-vous sur overlayfs et évitez-le entièrement. Dans la commande que Démarre votre démon docker, ajoutez simplement "-s overlay" '

cela a résolu mon problème.

1
VivaceVivo