Docker相关操作

当Docker容器无法启动时,可以通过查询容器ID获取其元数据,计算块数量,结合`docker info`的Pool Name激活块设备,挂载并访问容器内的数据。此外,文章还涉及如何制作Docker镜像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

当容器无法启动时,获取容器内数据(非数据卷内数据) 

 

  1. 利用容器ID查询容器对应设备的元数据
    [root@bogon ~]cat   /var/lib/docker/devicemapper/metadata/<container_ID>
    {"device_id":22,"size":107374182400,"transaction_id":24,"initialized":false}
     
  2. 计算块数量,每块512k,由上一步的size/512得到
    [root@bogon ~]# echo   $((107374182400/512))
    209715200
     
  3. 通过命令docker info得到Pool Name

    [root@bogon ~]# docker   info
    Containers: 3
    Images: 58
    Storage Driver: devicemapper
    Pool Name: docker-thinpool
    ...

  4. 激活容器对应块设备
    [root@bogon ~]#dmsetup   create   dev-604f   --table  "0 209715200 thin /dev/mapper/docker-thinpool 22"
    [注]  "dev-604f"  为自行定义的设备名,可自行任意定义
            "209715200 "  为第2步的计算值
            "docker-thinpool"   为Pool Name
            "22"  为device_id
     
  5. 成功后在/dev/mapper目录下出现名为"dev-604f"的设备
    [root@bogon ~]# ls   /dev/mapper/
    control   dev-604f   docker-meta   docker-thinpool   docker-thinpool_tdata   docker-thinpool_tmeta
     
  6. 将生成设备挂载到任意目录,便可查看设备中内容
    [root@bogon ~]#mkdir   temp
    [root@bogon ~]#mount   /dev/mapper/dev-604f ./temp
    [root@bogon ~]#cd   temp/rootfs/
     
  7. 用完后删除设备(先退出挂载目录)
    [root@bogon ~]umount   ./temp
    [root@bogon ~]dmsetup   remove dev-604f

 

制作镜像

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值