docker图像可以访问tmp目录吗?

时间:2016-12-11 15:01:03

标签: docker docker-compose

我正在尝试了解docker镜像访问/ tmp /目录的程度。

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

当我在docker-compose(v2)文件中定义这样的tmpfs时: df_server: image: "${DF_IMAGE}" build: . tmpfs: - /tmp 我得到一个错误,说该目录已经存在。当我尝试从我的webapp访问该目录时,我收到一条错误消息,指出该目录不存在。

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

1 个答案:

答案 0 :(得分:3)

大多数基于发行版的图片都会在图片中附带/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