2016-12-11 61 views
1

我想了解Docker鏡像訪問/ tmp /目錄的程度。碼頭圖像是否可以訪問tmp目錄?

在我的情況下,我使用frolvlad/alpine-oraclejdk8:超薄圖像,我的應用需要寫入臨時文件夾。

當我這樣定義的tmpfs在我的泊塢窗,撰寫(V2)文件: df_server: image: "${DF_IMAGE}" build: . tmpfs: - /tmp 我得到一個錯誤,指出該目錄已經存在。當我嘗試從我的Web應用程序訪問目錄時,出現一條錯誤消息,說目錄不存在。

當我將tmpfs目錄定義爲其他內容時,例如 tmpfs: - /foobar 我的webapp可以訪問和使用foobar目錄。

回答

2

基於發行版的大多數圖像都會在圖像中出現/tmp目錄。這將使用Docker設置使用的任何存儲驅動程序。

$ docker run -ti frolvlad/alpine-oraclejdk8:slim ls -ld /tmp 
drwxrwxrwt 2 root  root   4096 Oct 18 18:58 /tmp 

可寫入到

$ docker run -ti frolvlad/alpine-oraclejdk8:slim \ 
    time dd if=/dev/zero of=/tmp/zero bs=4k count=64k 
32768+0 records in 
32768+0 records out 
real 0m 0.84s 
user 0m 0.00s 
sys  0m 0.11s 

安裝的tmpfs增加了在內存中的/ tmp

$ docker run -ti --tmpfs /tmp frolvlad/alpine-oraclejdk8:slim \ 
    time dd if=/dev/zero of=/tmp/zero bs=4k count=64k 
65536+0 records in 
65536+0 records out 
real 0m 0.13s 
user 0m 0.01s 
sys  0m 0.12s 

你應該能夠編寫並從中讀取(根據不同的高山圖片)

docker run -ti --tmpfs /tmp mhart/alpine-node node -e ' 
    fs.writeFile(`/tmp/test`, `test`, (err, res) => { 
    console.log(`write`, err, res) 
    fs.readFile(`/tmp/test`, (err, data) => console.log(`read`, err, data)) 
    })' 

null undefined 
null <Buffer 74 65 73 74> 

我不知道你是如何得到「目錄已存在」的錯誤。

也許在不同的Docker主機上嘗試一樣?拉最新的frolvlad/alpine-oraclejdk8:slim

相關問題