问题标签 [unionfs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
12502 浏览

docker - 多个卷到单个目标目录?

有没有办法从主机挂载多个卷以形成单个目标挂载点?有点像这样:

我猜答案是否定的,但是“覆盖”在 Docker 的上下文中具有如此多的含义,因此在网络上搜索它有点困难。

如果没有,是否有可能有帮助的 Docker Store 映像?不幸的是,很多 Docker 镜像没有提供足够的说明来说明如何使用它们。

0 投票
2 回答
170 浏览

docker - How file lookup work in Docker container

According to Docker docs, every Dockerfile instruction create a layer, and all the layers are kept when you create new image based on an old one. Then when I create my own image, I might have hundreds of layers involved because of the recursive inherit of layers of base image.

In my understand, file lookup in container work this way:

  1. process want to access file a, lookup starts from the container layer(thin w/r layer) .
  2. UnionFS check whether this layer have a record for it (have it or marked as deleted). If yes, return it or say not found respectively, ending the lookup. If no, pass the task to the layer below.
  3. the lookup end at the bottom layer.

If that is the way, consider a file that resides in the bottom layer and unchanged by other layers, /bin/sh maybe, would need going through all the layers to the bottom. Though the layers might be very light-weight, a lookup still need 100x time than a regular one, noticeable. But from my experience, Docker is pretty fast, almost same as a native OS. Where am I wrong?

0 投票
1 回答
243 浏览

docker - 授予 Docker 对主机目录的访问权限,但稍后放弃更改

我想用 Docker 实现以下目标:我想让容器访问主机目录,以便容器可以进行更改,但是一旦容器退出/删除,更改就会被丢弃(很像 overlayfs)。

简单地将目录挂载为 docker 容器的卷对我来说似乎是错误的方式,因为对卷所做的更改仍然存在,我不希望这样。

我该如何解决这个问题?

0 投票
1 回答
81 浏览

docker - docker storage 后端和容器生成的数据存储

我正在学习 Docker 存储,但我有点困惑

问题 1
我们是否为每个 docker 主机 1 个后端存储(用于存储图像层和容器的可写层)?

如果我们配置一个容器生成的数据存储(以持久化容器写入的数据(卷、绑定挂载、tmpfs 挂载)),我们将有 2 个存储(后端和容器生成的数据存储)还是只有一个店铺 ?

问题 2:假设我们已经配置了一个卷来持久化容器生成的数据,即使容器被移除,它是否仍将是一个联合 fs 层,即使容器被移除,它也会被持久化?

问题 3:容器是可运行的镜像,但你能具体解释一下它们是什么吗?它们只是一个 unionFs 层吗?

问题 4
如果我们卸载或停止 docker,环回设备上的精简池是保存还是删除?

如果我们在逻辑卷上配置一个精简池并卸载 docker,我们还会在逻辑卷上保留图像和容器生成的数据吗?

问题 5:我们如何配置 docker 在远程机器上使用组卷(或逻辑卷)?

问题6:为kubernetes/okd/openshift cluser配置的持久化存储和为docker配置的持久化存储有什么不同,docker存储的配置与kubernetes的配置是否冲突? https://docs.okd.io/latest/install_config/persistent_storage/index.html https://docs.okd.io/latest/install_config/persistent_storage/index.html

0 投票
1 回答
20 浏览

docker - 当 Docker 共享文件夹抛出实例时它是如何工作的。我们是否应该考虑对一个文件抛出容器进行并发修改?

基本上我们应该只有一个线程来写一个文件。但是在 docker 环境中,我们应该注意共享文件的并发问题吗?

有出口两个问题,

  1. Docker 如何支持共享卷。文件如何跨实例同步。
  2. docker 是否支持对共享文件进行并发写入。
0 投票
0 回答
106 浏览

docker - Docker 容器中的联合挂载

在我的 Docker 容器中,有两个目录,每个目录都有一个文件:

如何挂载这些目录,以便两个文件仍然可以访问?
之后的结果mount -t aufs -o dirs=/foo:/bar none /mdst应该如下所示:

(我在里面运行 Container 和 shell--privileged--cap-add=SYS_ADMIN

我不断得到
mount: /mdst: wrong fs type, bad option, bad superblock on none, missing codepage or helper program, or other error.

一些研究把我带到了这个 GitHub-Issue,告诉我我不能在 docker 容器中做一个 overlay-fs。

有没有其他方法可以实现这一目标,或者我做错了什么?

0 投票
0 回答
42 浏览

linux - 将文件添加到 rw unionfs/squashfs 有效,但删除无效

我有一个大文件夹(20-30GB),这在 VPS 上浪费空间(和金钱)。LZMA/XZ 压缩后只需要大约 2-3GB,只有原始大小的 10% 左右。

现在我尝试了 squashfs,除了它是只读的之外,它还是很有前途的。然后我添加了一个 rw 文件夹,就像本教程中显示的那样,添加文件有效,但删除或重命名无效。通过将文件添加到已安装的组合文件夹中,添加的文件将放入我创建的 rw 文件夹中。但是通过删除文件或重命名,在 rw 层文件夹中的操作应该如何?

Unsquashing 不是一个选项,因为它计划只使用大约 10GB 的磁盘空间。

我会很高兴任何提示/提示。

0 投票
3 回答
597 浏览

docker - docker容器内的overlayfs

是否可以在(特权)docker 容器中安装覆盖 fs?至少我的直观方法(在容器外运行良好)失败了:

附加信息:

  • Docker 版本 18.09.1,构建 4c52b90
  • 内核 4.19.0-8-amd64
  • Debian 10(主机和 docker-image)
0 投票
0 回答
54 浏览

docker - 从一个 docker 容器共享 unionfs 挂载到另一个?

我正在运行 Windows 10、Docker 引擎 20.10.8 社区、WSL2 Ubuntu 20.04.3 LTS。我正在使用 Docker Compose 启动一些服务,主要是我从 docker-hub 获得的图像并且不修改,只需在它们运行后进行配置。我有 2 个 NFS 共享,我想将它们作为联合卷提供给这些服务。我不需要安装在 Windows 级别的 nfs 共享。我构建了一个 Dockerfile 和映像,用于挂载共享并使用 autofs 和在 Dockerfile 中运行的 startup.sh 脚本启动 union-fs 挂载。

如何将这些安装在该自定义容器中的已安装目录作为卷共享到我的 docker-compose.yml 中的其他容器?

自定义挂载容器的 Dockerfile:

启动文件:startup.sh

ps:容器需要以特权运行才能挂载工作。

另一个想法是将 NFS 挂载定义为顶层的卷。overlay2 存储驱动程序支持 nfs。所以 nfs 卷工作正常并且可以与服务共享。但是 unionfs 卷不起作用。overlay2 是否有类似 unionfs 的东西?如果我尝试这个,Docker 会抱怨:

错误:安装卷'/var/lib/docker/volumes/docker_unionMedia_union/_data'时出错:无法安装本地卷:mount nfsElementsMedia=RW:nfsVolume_OriginalsMedia=RO:/var/lib/docker/volumes/docker_unionMedia_union/_data,标志:0x400,数据:cow,max_files=32768,use_ino,allow_other,hard_remove,nonempty:没有这样的设备

任何帮助表示赞赏。

谢谢,托马斯

0 投票
1 回答
31 浏览

fuse - 在 appimage 中使用 unionfs

我正在从 AppImage(使用 appimage-builder v0.9.2 创建)中的脚本创建覆盖 FS(使用 unionfs-fuse)。
覆盖已成功挂载,但在脚本结束时,无法使用“ Operation not permitted”正确卸载。
在 AppImage 结束后,fusermount -u工作正常。

这是脚本script.sh

这是 AppImage 配方AppImageBuilder.yml

terminal.png(构建 AppImage还需要一个随机图标文件)。

AppImage 是使用以下工具构建的:

任何帮助,将不胜感激!