Docker mount似乎没有做任何事情

ehxuflar  于 2023-11-17  发布在  Docker
关注(0)|答案(1)|浏览(109)

我想我不明白docker中mounts/volumes的用途。在(debian)主机上,我是:

mkdir testdir
touch testdir/testfile
nano Dockerfile

字符串
并补充说:

FROM debian:11
RUN --mount=type=bind,source=./testdir,target=/testdir
RUN ls /testdir


然后运行docker build .
我希望ls命令能打印出testfile。但是看起来好像什么都没有挂载?(注意mount命令运行得很好)。

--------------------
  1 |     FROM debian:11
  2 |     RUN --mount=type=bind,source=./testdir,target=/testdir
  3 | >>> RUN ls /testdir
--------------------
ERROR: failed to solve: process "/bin/sh -c ls /testdir" did not complete successfully: exit code: 2


如果target甚至不创建指向其目标的目录,那么它的意义何在?
(运行docker 24.0.5和buildx 0.11.2)

uqcuzwp8

uqcuzwp81#

我想,你忽略了一个重要的细节:你在一个单独的RUN指令中运行ls /testdir。我不确定,但我猜这只可能在--mount=type=cache中运行。
您使用的是bind,因此您的挂载仅在相同的RUN内存中保持。
试试这样的东西:

FROM debian:11
RUN --mount=type=bind,source=./testdir,target=/testdir \
  ls /testdir

字符串

编辑:

我刚刚测试了这两个版本,它们在我的机器上都运行得很好。
问题肯定出在docker本身或者你正在使用的其他工具上,比如buildkit或者buildx

相关问题