【问题标题】:Docker Build with /dev/shm exec使用 /dev/shm exec 构建 Docker
【发布时间】:2021-04-10 07:58:27
【问题描述】:

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

【问题讨论】:

  • 你试过docker build--shm-size选项。 docs.docker.com/engine/reference/commandline/builder_build 检查此选项是否有助于 noexec。
  • 为什么在镜像构建过程中需要共享内存?您能否包含一个示例 Dockerfile 来说明您的用例?
  • @mchawre 是的,但这无济于事,我需要与大小无关的 exec
  • @DavidMaze 我正在创建一个带有填充数据库的 Oracle 容器。数据来自使用命令 impdp 的 Oracle 转储,该命令需要执行 /dev/shm。 dbacentrals.blogspot.com/2017/07/…

标签: docker dockerfile docker-build


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    相关资源
    最近更新 更多