当docker容器启动时,是否可能将丢失的文件添加到装载卷?
我有docker映像,有一个目录“a”,它挂载在主机目录“hostA”中。 在目录当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中的文件
**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
包含正在容器中装入的文件。然后,您可以使用# /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