误删docker容器补救方法
·
误删容器补救
- 去/var/lib/docker/volumes下,能够看到一系列的volumes,根据目录里面的内容、创建时间、更新时间判断哪(几)个目录是属于你删除的容器A的。
[root@localhost volumes]# ls -al
总用量 36
brw------- 1 root root 253, 0 10月 29 03:38 backingFsBlockDev
drwx-----x. 3 root root 19 10月 26 04:13 d58a4039de54eabc64dba4d7ba12d9d32c58b62a954188e98237d881c6b71a5d
drwx-----x 3 root root 19 10月 28 10:45 d7a8d8c0626e308cabaaf77440b7426277245b116f5fc5af5d0df6b1a49a3762
drwx-----x 3 root root 19 10月 28 11:24 e01143aa48cfcf9897dd7959aba77a273a91449e2040356585f7554200c5844f
drwx-----x 3 root root 19 10月 28 10:45 ee003f0d7936b7d7aa66f16a92941b9edfb12b2b4adba389d400609b938e0604
-rw-------. 1 root root 65536 10月 29 03:38 metadata.db
[root@localhost volumes]#
[root@localhost volumes]# du -sh *
0 backingFsBlockDev
0 d58a4039de54eabc64dba4d7ba12d9d32c58b62a954188e98237d881c6b71a5d
56M d7a8d8c0626e308cabaaf77440b7426277245b116f5fc5af5d0df6b1a49a3762
213M e01143aa48cfcf9897dd7959aba77a273a91449e2040356585f7554200c5844f
224M ee003f0d7936b7d7aa66f16a92941b9edfb12b2b4adba389d400609b938e0604
32K metadata.db
-
先备份好这些volumes
-
基于相同的镜像新启动一个容器B
-
通过
docker inspect 容器B找到容器B在/var/lib/docker/volumes中的volume目录
"Mounts": [
{
"Type": "volume",
"Name": "7a9d83fb2a2d6e882e25ffd85886ae24a6eb391b4cf81bba4033eab5099dc4a8",
"Source": "/var/lib/docker/volumes/7a9d83fb2a2d6e882e25ffd85886ae24a6eb391b4cf81bba4033eab5099dc4a8/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
-
进入卷分析数据结构,新旧卷数据结构一致则为原数据
-
迁移
- 停止容器B。
- 删除新的卷数据,使用mv命令将旧卷数据迁移,
- 再次启动容器B。
- 清除未使用的卷
docker volume prune
更多推荐
所有评论(0)