为了在生产中运行Docker,我遵循https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#configure-direct-lvm-mode-for-production中的步骤
一切似乎都很顺利。但如果我因为某种原因重新启动,一切都会一团糟。即使我删除了/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设置的持久性呢?
发布于 2016-10-21 21:03:45
幸运的是,Docker社区的一些人理解这个问题,并与他们分享了他们的解决方案。解决方案是: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并且/lib/ systemd /system/docker.service中的systemd服务文件中的相关部分需要更新为--storage-opt=dm.thinpooldev=/dev/mapper/docker-docker--pool
发布于 2016-12-08 22:04:04
在错误报告中,埃里克·帕里斯说:
如果您使用的是设备映射器(而不是回送) /var/lib/docker包含元数据,通知停靠器设备映射器存储区域的内容。如果删除/var/lib/docker,则元数据将丢失。Docker随后能够检测到瘦池中有数据,但是docker无法使用该信息。唯一的解决方案是删除瘦池并重新创建它,这样/var/lib/docker中的瘦池和元数据都将为空。
由于你提到的文档的措辞,我遇到了同样的问题。有一个步骤rm -rf /var/lib/docker.bk,直到那时我才删除了原始文件,导致了失败。
使用pvremove -ff /dev/sda2 (我的lvm驱动器)和重新创建、删除lvm分区中的签名,它对我起了作用。
我认为用你的设置,它应该是持久的。
对于我来说,另一个错误发生了,在重新启动lsblk没有显示我的lvm卷之后,也没有显示ls /dev/mapper。我正在使用Ubuntu,提交消息说它的默认设置没有(完全?)支持瘦配置。在sudo apt-get install thin-provisioning-tools之后,命令sudo vgchange -ay docker以及重新启动都为我工作。
https://stackoverflow.com/questions/40162022
复制相似问题