如何挂载到lowerdir(overlayfs)

问题描述 投票:0回答:1

我需要在 docker 镜像中包含一些 PHP 代码,同时使用主机目录中的一些代码,同时在运行的容器内维护特定的文件结构。

如何在docker-compose.yml文件中正确写入hostdir1的挂载?

让我用一个简短的例子来解释:

  1. 内部图像(构建后):
tree /mount
mount/
├── 1.txt
├── 4.txt
└── 5.txt
 cat mount/1.txt 
 internal
  1. 在主机文件系统上:
hostdir1/
├── 1.txt
├── 2.txt
└── somedir
    └── 3.txt
 cat hostdir1/1.txt
 external
  1. 我需要使用像overlayFS这样的东西挂载主机文件夹以包含容器,并在运行的容器中获取以下文件结构:
mount/
├── 1.txt
├── 2.txt
├── 4.txt
├── 5.txt
└── somedir
    └── 3.txt
cat mount/1.txt 
internal

更新:这里 他们只是将目录挂载到容器中,覆盖镜像中目录的所有内容。我需要将主机目录从下面挂载到所需的图像目录。保持图像中的所有文件可用,并向其中添加服务器上但图像中不存在的文件和目录。

docker docker-compose overlay overlayfs docker-overlay2
1个回答
0
投票

这对于overlayFS 解决方案来说是不可能的。问题在于,overlayFS 将只读的较低层与可写的顶层结合在一起。

Docker 镜像由一组较低的 docker 层和一个顶层组成,全部由 Docker 管理。为了达到预期的效果,主机 FS 必须拼接在 Docker 较低层的某个位置。

一个可能的解决方法是为主机文件创建第二个overlayFS,将其安装在Docker容器中,然后将所有内部文件复制到已安装的overlayFS。由于它是覆盖层,因此此副本不会影响较低层(您的主机文件)。或者,只需使用

cp --recursive --no-clobber

© www.soinside.com 2019 - 2024. All rights reserved.