[英]Is that possible adding the missing file to mount volume when docker container start?
我有 docker 映像,並且有一個目錄“ A ”,它安裝在主機目錄“ hostA ”中。 在目錄**hostA**
,有一個文件file0 。 當我構建 docker 鏡像時,在A 目錄中,有一個文件file1 。 為了更清楚,我將它們顯示如下:
In host:
hostA:
- file0
In docker container:
A:
- file1
當我使用 docker 鏡像啟動 docker 容器時。 由於目錄A掛載在主機目錄**hostA**
並且容器啟動時hostA 已存在,因此A 中的file1盡管已構建到 docker 映像中,但不會出現。 相反, file0將在 dir A 中可用,因為它在hostA 中
我的問題是是否有一種方法(在構建 docker 映像期間或啟動 docker 容器期間),使 file1 在 dir A (以及主機 dir hostA )中也可用。 這意味着容器啟動后,它將是
In host:
hostA:
- file0
- file1
In docker container:
A:
- file0
- file1
提前致謝。
不,據我所知沒有。 由於 Docker 卷掛載的工作方式與常規 unix 掛載相同,因此您不會在 Docker 容器中看到該文件。 通常,您將在容器的生命周期內會更改的目錄(例如本地開發期間的源代碼)和不會更改的文件(例如,使用 JavaScript 時的 node_modules)分開。
我可以為您概述兩個接近您想要的解決方案並且可能對您有用的想法。
您可以將容器目錄A
拆分為AA
和AB
。 AA
包含在構建期間添加的文件,而AB
包含您在容器中安裝的文件。 然后,您可以使用相對路徑(如../AB/some_file
從容器中的文件中引用掛載的文件。
# /A/AA/file1.js
require '../AB/file0';
In host:
hostA:
- file0
In docker container:
A:
AA:
- file1
AB: # mounted
- file0
作為另一種選擇,您可以掛載單個文件。 如果您只需要將幾個文件(如配置)掛載到容器中,那么這是一個有效的解決方案。
碼頭工人:
-v "PWD"/hostA/file0:/A/file0
碼頭工人組成:
somes_service:
volumes:
- hostA/file0:/A/file0
盡管如此,您的容器file1
將無法在您的主機上使用。
在這種情況下,您也可以將掛載的文件設置為只讀。
hostA/file0:/A/file0:ro
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.