Docker 使用 /dev/shm exec 构建

Docker Build with /dev/shm exec

我正在尝试构建一个 docker 映像,构建过程需要 /dev/shm 具有 exec,但默认情况下 /dev/shm 是使用 noexec 安装的。我知道我可以做一个 docker run --tmpfs /dev/shm:rw,exec imagename 然后一切正常,但在 docker 构建中似乎没有等效项。

这可能有点晚了,但对于最终来到这里的任何其他人,您可以在 BuildKit 的 dockerfiles 中使用一个标志,让您可以在构建时挂载文件系统。通过更改 dockerfile 的 运行 行以包含挂载标志,您可以使用具有正确权限的新临时文件系统覆盖构建器通常的共享内存目录。我发现以下有效:

RUN --mount=type=tmpfs,target=/dev/shm,rw \
    yourDatabaseImportScript.sh

这将需要您用来构建映像的机器 has BuildKit enabled

BuildKit mounts flag documentation
Setting permissions on BuildKit tmpfs mounts
Oracle's FAQ answer on permissions needed for /dev/shm