3 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
有幾種方法可以做到這一點(diǎn)。最簡單的方法是使用dockerfile ADD
命令,如下所示:
ADD . /path/inside/docker/container
但是,在構(gòu)建dockerfile之后對主機(jī)上的此目錄所做的任何更改都不會顯示在容器中。這是因?yàn)樵跇?gòu)建容器時(shí),docker將目錄壓縮為a .tar
并將該上下文永久地上載到容器中。
執(zhí)行此操作的第二種方法是您嘗試的方式,即裝入卷。由于嘗試盡可能地移植,因此無法將主機(jī)目錄映射到dockerfile中的docker容器目錄,因?yàn)橹鳈C(jī)目錄可能會根據(jù)您運(yùn)行的計(jì)算機(jī)而更改。要將主機(jī)目錄映射到docker容器目錄,您需要-v
在使用docker run時(shí)使用該標(biāo)志,如下所示:
docker run -v /host/directory:/container/directory -other -options image_name command_to_run

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
這個(gè)問題的用戶正在使用Docker version 0.9.1, build 867b2a9
,我會給你一個(gè)docker版本> = 17.06的答案。
您想要的是,在容器目錄中保持本地目錄同步,是通過安裝類型的卷來完成的bind
。這將綁定源(您的系統(tǒng))和目標(biāo)(在docker容器)目錄。它與在linux上安裝目錄幾乎相同。
根據(jù)Docker文檔,現(xiàn)在安裝適當(dāng)?shù)拿?code>mount而不是-v
。這是它的文檔:
--mount
:由多個(gè)鍵值對組成,以逗號分隔。每個(gè)鍵/值對采用<key>=<value>
元組的形式。該--mount
語法比更詳細(xì)的-v
或--volume
,但按鍵的順序并不顯著,并且標(biāo)志的價(jià)值更容易理解。該
type
安裝件,其可以是bind
,volume
,或tmpfs
。(我們將使用bind)該
source
安裝的。對于綁定裝入,這是Docker守護(hù)程序主機(jī)上的文件或目錄的路徑。可以指定為source
或src
。將
destination
文件或目錄安裝在容器中的路徑作為其值??梢灾付?code>destination,dst
或target
。
因此,要安裝當(dāng)前目錄(源)與/test_container
(目標(biāo)),我們將使用:
docker run -it --mount src="$(pwd)",target=/test_container,type=bind k3_s3
如果這些安裝參數(shù)有空格,則必須在它們周圍加上引號。當(dāng)我知道他們不這樣做時(shí),我會`pwd`
改用:
docker run -it --mount src=`pwd`,target=/test_container,type=bind k3_s3
您還必須處理文件權(quán)限,請參閱此文章。

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
2個(gè)連續(xù)的安裝:我想這里的很多帖子可能都使用了兩個(gè)boot2docker,你沒有看到任何東西的原因是因?yàn)槟銖腷oot2docker安裝的目錄不是來自你的主機(jī)。
您基本上需要2個(gè)連續(xù)的安裝:第一個(gè)是從主機(jī)到系統(tǒng)安裝目錄,第二個(gè)是將新目錄從boot2docker安裝到您的容器,如下所示:
1.在boot2docker上安裝本地系統(tǒng)
sudo mount -t vboxsf hostfolder /boot2dockerfolder
2.在linux容器上掛載boot2docker文件
docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename
然后,當(dāng)您ls
在容器文件夾中時(shí),您將看到主機(jī)文件夾的內(nèi)容。
添加回答
舉報(bào)