gpt4 book ai didi

docker - docker 镜像可以访问 tmp 目录吗?

转载 作者:行者123 更新时间:2023-12-02 18:11:58 24 4
gpt4 key购买 nike

我试图了解 docker 图像在多大程度上可以访问/tmp/目录。

就我而言,我使用的是 frolvlad/alpine-oraclejdk8:slim 图像,我的应用程序需要写入临时文件夹。

当我在我的 docker-compose (v2) 文件中定义这样的 tmpfs 时:
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

你应该能够读写它(不同的基于 Alpine 的图像)
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 ?

关于docker - docker 镜像可以访问 tmp 目录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41087539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com