首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker,码头容器的aufs根在哪里?

docker,码头容器的aufs根在哪里?
EN

Stack Overflow用户
提问于 2014-10-01 03:38:10
回答 2查看 1.8K关注 0票数 2

如何获得aufs系统的根文件夹信息?

假设我运行docker run mytag echo 'Done',在那之后,我相信码头将有一个废弃的容器建立在aufs系统之上。我想使用这个aufs文件系统(比如chroot),而不执行docker savedocker export

我怎么能拿到呢?我需要访问这个aufs文件系统堆栈,以便在整个码头系统中创建一个squashfs文件系统,而不是docker export的tar文件系统,因为我总是对图像文件执行mksquashfs,并且从未从该系统中执行mksquashfs系统。

这是Ubuntu下的lxc-docker版本1.2.0。

更新:

在尝试了Charles的建议之后,我发现在这个系统中建立一个squashfs系统是不可行的:

代码语言:javascript
复制
root@1676061f0072:/#  mount --bind / /mnt/root || { echo error bind mount; exit; } # bind-mount container root only
mount: block device / is write-protected, mounting read-only
mount: cannot mount block device / read-only
error bind mount
exit

所以,我以奥斯曼的回答作为答案。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-01 17:28:32

我同意这一评论,但是这些图像可以在/var/lib/docker/aufs/diff/<id>找到,其中是容器的id,您可以使用

代码语言:javascript
复制
docker inspect <container-name> | grep Id
票数 2
EN

Stack Overflow用户

发布于 2014-10-02 19:53:35

考虑在容器本身内运行mksquashfs,并安装目标目录(以及绑定挂载上的根文件系统,这样squashfs映像就不会试图恢复到/proc/sys等)。

类似于下面,未经测试的代码:

代码语言:javascript
复制
docker run --privileged=true -v /path/to/destination:/mnt/dest bash <<'EOF'
  mkdir -p /mnt/root || exit
  mount --bind / /mnt/root || exit             # bind-mount container root only
  mksquashfs /mnt/root /mnt/dest/squashfs.img  # build an image of that root fs
EOF

可能需要进行一些调优--我不确定/mnt/dest是否需要存在于容器中,然后才能运行,例如,--privileged标志可能是不必要的。

它的优点是不关心使用的是哪个Docker后端--它与AUFS一样适用于LVM和btrfs存储后端--并且只依赖于支持的语义(因此它将继续使用未来的版本)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26133731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档