Boot2docker上掛載/tmp路徑問題

由於boot2docker是使用VirtualBox之類的虛擬環境上所架設出來的linux來產生docker環境,因此實際上在Mac或是Windows上是無法直接接觸到這個環境,這將會造成docker run -v參數在實際運作上會因為一些原因可能無法掛載Mac或Windows上的空間... 目前測試在Mac上遇到下列問題:

準備一個/tmp下的專案目錄,預計提供為執行node.js程式的空間

$ express -e /tmp/web2
$ cd /tmp/web && npm install
$ ls -l 
total 16
-rw-r--r--   1 simonsu  wheel  1430 Mar  7 23:24 app.js
drwxr-xr-x   3 simonsu  wheel   102 Mar  7 23:24 bin
drwxr-xr-x  10 simonsu  staff   340 Mar  7 23:24 node_modules
-rw-r--r--   1 simonsu  wheel   322 Mar  7 23:24 package.json
drwxr-xr-x   5 simonsu  wheel   170 Mar  7 23:24 public
drwxr-xr-x   4 simonsu  wheel   136 Mar  7 23:24 routes
drwxr-xr-x   5 simonsu  wheel   170 Mar  7 23:24 views

此時,透過我所建置的peihsinsu/nodejs-runtime環境啟動該目錄的程式,理論上可以正常執行...

$ docker run -d -p 3000:3000 -v /tmp/web2:/data peihsinsu/nodejs-runtime
d1a63a8aa8301a251d110b7104ceb14fb9c649b44ce1c4ba3b17fe00336e4636

但是透過docker logs可以看到該目錄下沒找到我們所建置的package.json檔案,透過一些方式,會實際發現其實整個路徑下面是空的,代表掛載上有些異常...

$ docker logs d1a63a8aa8301a251d110b7104ceb14fb9c649b44ce1c4ba3b17fe00336e4636
npm ERR! Error: ENOENT, open '/data/package.json'
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! System Linux 3.18.5-tinycore64
npm ERR! command "/nodejs/bin/node" "/nodejs/bin/npm" "start"
npm ERR! cwd /data
npm ERR! node -v v0.10.33
npm ERR! npm -v 1.4.28
npm ERR! path /data/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /data/npm-debug.log
npm ERR! not ok code 0

但同樣的狀況,如果把/tmp/web2移到其他位置,例如該使用者的home目錄下,則掛載可以正常執行... 這個狀況判斷應該是跟/tmp這個目錄的檔案屬性有關,類似狀況,建議如果遇到相同問題可以使用下面方式測試掛載有沒成功...

$ docker run -it -v [host-folder-path]:[destination-folder-path] centos bash

然後登入該主機檢查destination-folder-path是否有應該掛載的檔案。

results matching ""

    No results matching ""