我需要在 docker 镜像中包含一些 PHP 代码,同时使用主机目录中的一些代码,同时在运行的容器内维护特定的文件结构。
如何在docker-compose.yml文件中正确写入hostdir1的挂载?
让我用一个简短的例子来解释:
tree /mount mount/ ├── 1.txt ├── 4.txt └── 5.txt
cat mount/1.txt
internal
hostdir1/ ├── 1.txt ├── 2.txt └── somedir └── 3.txt
cat hostdir1/1.txt
external
mount/ ├── 1.txt ├── 2.txt ├── 4.txt ├── 5.txt └── somedir └── 3.txt
cat mount/1.txt
internal
更新:这里 他们只是将目录挂载到容器中,覆盖镜像中目录的所有内容。我需要将主机目录从下面挂载到所需的图像目录。保持图像中的所有文件可用,并向其中添加服务器上但图像中不存在的文件和目录。
这对于overlayFS 解决方案来说是不可能的。问题在于,overlayFS 将只读的较低层与可写的顶层结合在一起。
Docker 镜像由一组较低的 docker 层和一个顶层组成,全部由 Docker 管理。为了达到预期的效果,主机 FS 必须拼接在 Docker 较低层的某个位置。
一个可能的解决方法是为主机文件创建第二个overlayFS,将其安装在Docker容器中,然后将所有内部文件复制到已安装的overlayFS。由于它是覆盖层,因此此副本不会影响较低层(您的主机文件)。或者,只需使用
cp --recursive --no-clobber