docker图像是否可以访问tmp目录?

我想了解一个docker镜像访问/ tmp /目录的程度。

在我的情况下,我使用frolvlad / alpine-oraclejdk8:苗条的图像,我的应用程序需要写入临时文件夹。

当我在我的df_server: image: "${DF_IMAGE}" build: . tmpfs: - /tmp -compose(v2)文件中像这样定义tmpfs时: df_server: image: "${DF_IMAGE}" build: . tmpfs: - /tmp df_server: image: "${DF_IMAGE}" build: . tmpfs: - /tmp我得到一个错误,说目录已经存在。 当我尝试从我的web应用程序访问目录时,出现一个错误,提示该目录不存在。

当我将tmpfs目录定义为其他内容时,例如tmpfs: - /foobar我的webapp可以访问和使用目录foobar。

基于发行版的大多数图像将在图像内部带有一个/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