2016-05-17 73 views
3

我有一個Docker Image,它有一個VOLUME [「/ log」]。Dockerfile VOLUME和docker run -v命令之間的Docker區別

在運行容器時,我正在掛載主機上的一個文件夾。

我希望docker寫在VOLUME [「/ log」]上的所有日誌都可用於主機。

docker run --name=test -v ${pwd}/hostlogfolder:/log dockerimage:1 

日誌沒有得到通過hostlogfolder

但日誌可在裏面位置泊塢窗寫入/日誌

docker exec -it test bash 
cd /log 

什麼是安裝文件夾的正確方法是什麼?

回答

1

如果要使用預定義設置(如添加音量)創建圖像,則必須使用Dockerfile。或者,如果您不需要創建圖像,但創建容器時僅需要臨時容器來傳遞圖像。

我想你需要閱讀有關創建卷和其他指令的文檔。它可能對你非常有用。

docker run -d -P --name web -v /webapp training/webapp python app.py 

https://docs.docker.com/engine/userguide/containers/dockervolumes/

+0

我想在位置/日誌位置訪問由Docker編寫的文件,這是我在Dockerfile中使用VOLUME [「/ log」]提到的位置。 當我運行docker檢查時,我看到兩個掛載指向docker系統文件位置的掛載以及一個指向我提供的主機路徑的掛載。 – unnik

+0

有沒有辦法在Dockerfile中用VOLUME指令指定主機的掛載點? –

+0

^nvm我實際上做了一些'docker檢查一些容器| grep -e Source -e Destination「,它的'Dockerfile'中有一個'VOLUME [」/ some/dir「]'指令。我在'Destination - >/some/dir'中看到了一個自動創建的目錄,在我的主機上關於'/ var/lib/docker/volumes/some-container-id/_data'自動創建了一個目錄。到目前爲止,這解釋了它。 –

2

你就要成功了,命令需要一個小的修正:

docker run --name=test -v $(pwd)/hostlogfolder:/log dockerimage:1 

注意,括號內是不同的:
錯誤:${pwd}
權:$(pwd)

一旦運行,您可以使用驗證安裝的卷:

docker inspect <container id> - 你可以使用docker ps

檢查命令輸出的坐騎部分容器ID。

"Mounts": [ 
      { 
       "Source": "<host path>", 
       "Destination": "<container path>", 
       "Mode": "", 
       "RW": true 
      }] 
相關問題