当docker容器启动时,是否可能将丢失的文件添加到装载卷?

当docker容器启动时,是否可能将丢失的文件添加到装载卷?,docker,volume,Docker,Volume,我有docker映像,有一个目录“a”,它挂载在主机目录“hostA”中。 在目录**hostA**中,有一个文件file0。 当我构建docker映像时,在directyA中,有一个文件file1。为了更清楚,我将它们显示如下: In host: hostA: - file0 In docker container: A: - file1 当我用docker图像启动docker容器时。由于目录A安装在主机目录**hostA**中,并且在容器启动时存在hostA,因此A中的文件

我有docker映像,有一个目录“a”,它挂载在主机目录“hostA”中。 在目录
**hostA**
中,有一个文件file0。 当我构建docker映像时,在directyA中,有一个文件file1。为了更清楚,我将它们显示如下:

In host: 
hostA:
   - file0
In docker container: 
A:
   - file1
当我用docker图像启动docker容器时。由于目录A安装在主机目录
**hostA**
中,并且在容器启动时存在hostA,因此A中的文件1将不会出现,尽管它已内置到docker映像中。相反,file0将在dirA中可用,因为它位于hostA

我的问题是,是否有一种方法(在构建docker映像或启动docker容器期间)使文件1在dirA中(以及在host dirhostA中)也可用。 这意味着容器启动后,它将

In host: 
hostA:
   - file0
   - file1
In docker container: 
A:
   - file0
   - file1

提前谢谢。

不,据我所知还没有。由于Docker卷装载与常规unix装载的工作方式相同,因此在Docker容器中看不到该文件。 通常,您将在容器生命周期内更改的目录(如本地开发期间的源代码)和不更改的文件(如使用JavaScript时的节点_模块)分开

我可以向您概述两个接近您期望的解决方案并可能对您有用的想法

装载到其他目录 您可以将容器目录
A
拆分为
AA
AB
AA
包含在生成时添加的文件,而
AB
包含正在容器中装入的文件。然后,您可以使用等相对路径从容器中的文件引用装入的文件ode>。/AB/some_文件

# /A/AA/file1.js
require '../AB/file0';
装载单个文件 作为另一种选择,您可以挂载单个文件。如果您只需要将几个文件(如配置)挂载到容器中,这是一个有效的解决方案

码头工人:

-v "PWD"/hostA/file0:/A/file0
docker compose:

somes_service:
  volumes:
    - hostA/file0:/A/file0
但是,容器
file1
中的文件在主机上仍然不可用

在这种情况下,还可以将装载的文件设置为只读

hostA/file0:/A/file0:ro
希望能有帮助

hostA/file0:/A/file0:ro