После обновления до докера 18.09. все контейнеры недействительны из-за ошибки устройства - PullRequest
0 голосов
/ 12 ноября 2018

Сегодня я обновил докер с 18.06 до 18.09 в хосте debian stretch.После обновления все наши образы и контейнер «исчезли», то есть docker <command> больше их не отображает, но данные в /var/lib/docker не исчезли.dockerd -D unveiled:

Cannot load container XXX because it was created with another graph driver

Итак, первое, что я сделал, - понизил докер до последней версии, чтобы проверить, исправляет ли это.Это сработало отчасти.Файл модуля systemd, который работал раньше, не смог запустить службу докера.Оказывается, я должен явно передать -s devicemapper в dockerd сейчас , и я не знаю, почему , потому что, очевидно, обновление до 18.09 поставило /var/lib/docker/overlay2, который мне просто пришлось удалить, чтобы сделать запуск 18.06 какbefore.

Итак, после того, как я подтвердил, что это исправлено в последней версии Docker, я снова обновился до 18.09 и попытался, если передача -s devicemapper явно помогает.Но с 18.09 демон даже не запускается вообще и жалуется:

Failed to GetDriver graph                     driver=devicemapper error="graphdriver plugins are only supported with experimental mode" home-dir=/var/lib/docker

Я не могу найти ничего о том, что devicemapper устарела или что-то в этом роде, так что я должен был сделать до того, какОбновить?Есть ли какой-нибудь общий совет / лучшая практика, чтобы избежать подобных проблем?

1 Ответ

0 голосов
/ 19 ноября 2018

На случай, если это кому-нибудь поможет.Я должен был сбросить версию 18.09, которая была загружена через канал обновления для моей установки mint:

sudo apt-get autoremove docker-ce 
sudo rm -rf /etc/docker 
sudo rm -rf /var/lib/docker
sudo apt-get autoremove --purge docker-ce

Затем переустановить перед тем, как вернуть работающий докер 18.09:

sudo apt-get install docker-ce

Thisпереместил мой драйвер хранилища в Storage Driver: overlay2, когда он был ранее devicemapper, что, похоже, является причиной проблемы.

Нет сомнений, что это можно решить с помощью настроек /etc/docker/daemon.json, но у меня нет времени, чтобы выяснить, что это, к сожалению.

Очевидно, что вы потеряете все ваши локальные образы Docker, если вы введете ядерное ядро ​​/var/lib/docker, поэтому убедитесь, что вы хотите сделать это перед вырезанием-вставкой.

И да, оригинальный вопрос, вероятно, должен был быть отправлен в SU, а не в SO ...

...