【问题标题】:Auto mount volumes自动挂载卷
【发布时间】:2022-01-24 11:40:33
【问题描述】:

我想知道是否可以让 Docker 在构建或运行容器阶段自动挂载卷。使用 podman 很简单,使用 /usr/share/containers/mounts.conf,但我需要使用 Docker CE。

如果不是,我可以在 Docker 构建阶段以某种方式使用主机 RHEL 订阅吗?我需要使用 RHEL UBI 映像,并且必须使用公司的 Satellite

【问题讨论】:

  • 我不确定你的意思,但是自动挂载卷的 bash 脚本会有帮助吗?大多数编程语言都可以通过一个名为 system() 的命令来运行 bash 脚本,所以如果 docker 可以运行系统调用,那么 bash 脚本可能就可以工作了。
  • 使用 podman,我可以指定应该自动挂载的卷,即使在构建阶段也是如此:cat /usr/share/containers/mounts.conf /usr/share/rhel/secrets:/run/secrets 。我正在 docker 中寻找类似的东西
  • 抱歉,我什至不知道 podman 是什么。

标签: docker rhel podman


【解决方案1】:

在 docker 中构建的容器镜像被设计为自包含和可移植的。无论您是在主机上还是在云中的 CI 服务器上运行构建都无关紧要。为此,它们依赖于构建上下文和构建命令的参数,而不是主机上的其他设置(如果可能)。

buildah 似乎对他们的工具采取了不同的方法,允许您在构建中使用来自主机的组件,从而为您提供更大的灵活性,但也更加脆弱。

说 docker 中不存在“功能”,这是很长的一段话,如果它被创建,我怀疑它看起来像你所描述的那样。相反,使用 buildkit,它们允许您从构建命令行注入秘密,这些秘密被安装到需要它们的步骤中。 buildkit docs 中提供了一个示例:

# syntax = docker/dockerfile:1.3
FROM python:3
RUN pip install awscli
RUN --mount=type=secret,id=aws,target=/root/.aws/credentials aws s3 cp s3://... ...

要构建该 Dockerfile,您可以将秘密作为 CLI arg 传递:

$ docker build --secret id=aws,src=$HOME/.aws/credentials .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 2020-08-07
    • 2010-09-24
    • 2021-10-26
    • 2011-08-25
    • 2021-07-16
    • 2020-09-16
    相关资源
    最近更新 更多