亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Docker容器中安裝主機目錄

如何在Docker容器中安裝主機目錄

如何在Docker容器中安裝主機目錄我正在嘗試將主機目錄掛載到Docker容器中,以便在主機上完成的任何更新都會反映到Docker容器中。我在哪里做錯了什么。這是我做的:kishore$ cat DockerfileFROM ubuntu:trustyRUN apt-get updateRUN apt-get -y install git curl vimCMD ["/bin/bash"]WORKDIR /test_containerVOLUME ["/test_container"]kishore$ tree.├── Dockerfile└── main_folder    ├── tfile1.txt    ├── tfile2.txt    ├── tfile3.txt    └── tfile4.txt1 directory, 5 fileskishore$ pwd/Users/kishore/tdockkishore$ docker build --tag=k3_s3:latest .Uploading context 7.168 kB Uploading context Step 0 : FROM ubuntu:trusty  ---> 99ec81b80c55 Step 1 : RUN apt-get update  ---> Using cache  ---> 1c7282005040 Step 2 : RUN apt-get -y install git curl vim  ---> Using cache  ---> aed48634e300 Step 3 : CMD ["/bin/bash"]  ---> Running in d081b576878d  ---> 65db8df48595 Step 4 : WORKDIR /test_container  ---> Running in 5b8d2ccd719d  ---> 250369b30e1f Step 5 : VOLUME ["/test_container"]  ---> Running in 72ca332d9809  ---> 163deb2b1bc5 Successfully built 163deb2b1bc5 Removing intermediate container b8bfcb071441 Removing intermediate container d081b576878d Removing intermediate container 5b8d2ccd719d Removing intermediate container 72ca332d9809kishore$ docker run -d -v /Users/kishore/main_folder:/test_container k3_s3:latestc9f9a7e09c54ee1c2cc966f15c963b4af320b5203b8c46689033c1ab8872a0eakishore$ docker run -i -t k3_s3:latest /bin/bashroot@0f17e2313a46:/test_container# ls -al total 8 drwx------  2 root root 4096 Apr 29 05:15 . drwxr-xr-x 66 root root 4096 Apr 29 05:15 ..root@0f17e2313a46:/test_container# exitexitkishore$ docker -vDocker version 0.9.1, build 867b2a9我不知道如何檢查boot2docker版本問題,面臨的問題:如何將main_folder鏈接到docker容器中的test_container文件夾?我需要自動完成。如果沒有真正使用run -d -v命令,我該怎么做呢?如果boot2docker崩潰會怎么樣?存儲Docker文件在哪里(除了Dockerfile)?
查看完整描述

3 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

有幾種方法可以做到這一點。最簡單的方法是使用dockerfile ADD命令,如下所示:

ADD . /path/inside/docker/container

但是,在構建dockerfile之后對主機上的此目錄所做的任何更改都不會顯示在容器中。這是因為在構建容器時,docker將目錄壓縮為a .tar并將該上下文永久地上載到容器中。

執行此操作的第二種方法是您嘗試的方式,即裝入卷。由于嘗試盡可能地移植,因此無法將主機目錄映射到dockerfile中的docker容器目錄,因為主機目錄可能會根據您運行的計算機而更改。要將主機目錄映射到docker容器目錄,您需要-v在使用docker run時使用該標志,如下所示:

docker run -v /host/directory:/container/directory -other -options image_name command_to_run


查看完整回答
反對 回復 2019-08-14
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

這個問題的用戶正在使用Docker version 0.9.1, build 867b2a9,我會給你一個docker版本> = 17.06的答案。

您想要的是,在容器目錄中保持本地目錄同步,是通過安裝類型的卷來完成的bind。這將綁定源(您的系統)和目標(在docker容器)目錄。它與在linux上安裝目錄幾乎相同。

根據Docker文檔,現在安裝適當的命令mount而不是-v。這是它的文檔:

  • --mount:由多個鍵值對組成,以逗號分隔。每個鍵/值對采用<key>=<value>元組的形式。該--mount語法比更詳細的-v--volume,但按鍵的順序并不顯著,并且標志的價值更容易理解。

  • type安裝件,其可以是bindvolume,或tmpfs。(我們將使用bind

  • source安裝的。對于綁定裝入,這是Docker守護程序主機上的文件或目錄的路徑??梢灾付?code>source或src

  • destination文件或目錄安裝在容器中的路徑作為其值。可以指定為destinationdsttarget。

因此,要安裝當前目錄(源)與/test_container(目標),我們將使用:

    docker run -it --mount src="$(pwd)",target=/test_container,type=bind k3_s3

如果這些安裝參數有空格,則必須在它們周圍加上引號。當我知道他們不這樣做時,我會`pwd`改用:

    docker run -it --mount src=`pwd`,target=/test_container,type=bind k3_s3

您還必須處理文件權限,請參閱此文章。


查看完整回答
反對 回復 2019-08-14
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

2個連續的安裝:我想這里的很多帖子可能都使用了兩個boot2docker,你沒有看到任何東西的原因是因為你從boot2docker安裝的目錄不是來自你的主機。

您基本上需要2個連續的安裝:第一個是從主機到系統安裝目錄,第二個是將新目錄從boot2docker安裝到您的容器,如下所示:

1.在boot2docker上安裝本地系統

sudo mount -t vboxsf hostfolder /boot2dockerfolder

2.在linux容器上掛載boot2docker文件

docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename

然后,當您ls在容器文件夾中時,您將看到主機文件夾的內容。


查看完整回答
反對 回復 2019-08-14
  • 3 回答
  • 0 關注
  • 1432 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號