2016-10-20 118 views
4

工作後,爲了在生產環境中運行多克,我下面在https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#configure-direct-lvm-mode-for-production直接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並抵制啓動。

我知道必須有一些文檔說明如何使direct-lvm設置在重新啓動時保持持久性。有些東西會在重啓後自動恢復設置。我找不到任何東西。

那麼如何實現我的direct-lvm設置的持久性?

回答

2

幸運的是,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 

,需要和--storage-opt=dm.thinpooldev=/dev/mapper/docker-docker--pool

4

被更新在bug report埃裏克巴黎/lib/systemd/system/docker.service在systemd服務文件的相關部分說:

IF您正在使用設備映射程序(而不是回送)/ var/lib/docker包含通知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以及重新啓動後爲我工作。