正如在生产系统上所建议的那样,我在具有devicemapper和Thinpool设备的Redhat系统上运行docker。现在,当我想重新安装docker时,我需要两个步骤:
1)删除docker目录(在我的情况下为/ area51 / docker)
2)清除Thinpool设备
该搬运工文档指出,使用与dm.metadev和dm.datadev选项devicemapper时,清洁devicemapper的最简单的方法是:
如果设置新的元数据池,则必须有效。这可以通过将前4k设为零以指示空的元数据来实现,如下所示:
$ dd if=/dev/zero of=$metadata_dev bs=4096 count=1
Run Code Online (Sandbox Code Playgroud)
不幸的是,根据文档,dm.metadatadev不推荐使用,而是改为使用dm.thinpooldev 。
我的thinpool是按照此docker 指令创建的, 因此,我的设置现在看起来像这样:
cat /etc/docker/daemon.json
{
"storage-driver": "devicemapper",
"storage-opts": [
"dm.thinpooldev=/dev/mapper/thinpool_VG_38401-thinpool",
"dm.basesize=18G"
]
}
Run Code Online (Sandbox Code Playgroud)
在devicemapper目录下,我看到以下Thinpool设备
ls -l /dev/mapper/thinpool_VG_38401-thinpool*
lrwxrwxrwx 1 root root 7 Dec 6 08:31 /dev/mapper/thinpool_VG_38401-thinpool -> ../dm-8
lrwxrwxrwx 1 root root 7 Dec 6 08:31 /dev/mapper/thinpool_VG_38401-thinpool_tdata -> ../dm-7
lrwxrwxrwx 1 root root 7 Dec 6 08:31 /dev/mapper/thinpool_VG_38401-thinpool_tmeta -> ../dm-6
Run Code Online (Sandbox Code Playgroud)
因此,在成功运行docker之后,我尝试如上所述重新安装并通过在tmeta设备中写入4K零来清除Thinpool并重新启动docker:
dd if=/dev/zero of=/dev/mapper/thinpool_VG_38401-thinpool_tmeta bs=4096 count=1
systemctl …Run Code Online (Sandbox Code Playgroud)