2016-10-20 2 views
4

Для запуска Docker в производстве, я следую шаги в https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#configure-direct-lvm-mode-for-productionDirect-LVM перестает работать после перезагрузки

Все, кажется, работает хорошо. Но если я по какой-то причине перезагружу, все испортится. Даже если я удалю все из /var/lib/docker, и я запустил lvremove, vgremove and pvremove, он все еще говорит Error starting daemon: error initializing graphdriver: devmapper: Unable to take ownership of thin-pool (docker-thinpool) that already has used data blocks и сопротивляется, чтобы начать.

Я знаю, что должна быть какая-то документация, в которой показано, как настроить параметры прямого lvm на перезагрузку. Что-то автоматически восстанавливает настройки после перезагрузки. Я не мог найти.

Итак, как мне добиться настойчивости для моих настроек с прямым lvm?

ответ

2

К счастью, кто-то из сообщества Докеров понял проблему и поделился своим решением. Решение: https://github.com/projectatomic/docker-storage-setup.

apt install -y thin-provisioning-tools 
mkdir /usr/lib/docker-storage-setup 
mkdir /etc/sysconfig 
git clone https://github.com/projectatomic/docker-storage-setup.git  /opt/docker-storage-setup 
cp /opt/docker-storage-setup/docker-storage-setup.sh /usr/bin/docker-storage-setup 
cp /opt/docker-storage-setup/docker-storage-setup.service /lib/systemd/system/docker-storage-setup.service 
cp /opt/docker-storage-setup/libdss.sh /usr/lib/docker-storage-setup 
VG=docker DATA_SIZE=95%FREE STORAGE_DRIVER=devicemapper /opt/docker-storage-setup/docker-storage-setup.sh 

systemctl enable docker-storage-setup 
lvrename docker/thinpool docker/docker-pool 

И раздел, посвященный в Systemd файле службы в /lib/systemd/system/docker.service должен быть обновлен --storage-opt=dm.thinpooldev=/dev/mapper/docker-docker--pool

4

В bug report Эрик Париже говорит:

IF вы используете устройство mapper (вместо loopback)/var/lib/docker содержит метаданные, информирующие докеров о содержимом области хранения карт устройства. Если вы удалите/var/lib/docker, потеряете метаданные. Затем Docker может обнаружить, что тонкий пул имеет данные, но докер не может использовать эту информацию. Единственное решение - удалить тонкий пул и воссоздать его, чтобы и тонкий пул, и метаданные в/var/lib/docker были пусты.

Я столкнулся с той же проблемой из-за формулировки документации, которую вы упомянули. Был шаг rm -rf /var/lib/docker.bk, и только тогда я удалил исходные файлы, вызвав сбой.

С pvremove -ff /dev/sda2 (мой привод lvm) и воссоздавая, протирая подписи в разделах lvm, это сработало для меня.

Я думаю, что с вашими настройками он уже должен быть постоянным.

Для меня произошла еще одна ошибка, после перезагрузки lsblk не показывал объемы моего lvm, ни ls /dev/mapper. Я использую Ubuntu, а commit message говорит, что его настройка по умолчанию (полностью?) Не поддерживает тонкие настройки. После sudo apt-get install thin-provisioning-tools команда sudo vgchange -ay docker, а также перезагрузки работали для меня.

Смежные вопросы