gpt4 book ai didi

docker - 如何在构建期间将凭据带入 Docker 容器

转载 作者:IT老高 更新时间:2023-10-28 21:19:13 25 4
gpt4 key购买 nike

我想知道是否有关于如何在 docker build 期间将凭据注入(inject) Docker 容器的最佳实践。在我的 Dockerfile 中,我需要获取需要基本身份验证的资源网络服务器,并且我正在考虑如何将凭据带入容器而不对其进行硬编码的正确方法。

.netrc 文件和 curl --netrc ... 一起使用怎么样?但是安全呢?我不喜欢将凭据与我的 Dockerfile 一起保存在源存储库中的想法。

例如,是否有任何方法可以使用参数或环境变量注入(inject)凭据?

有什么想法吗?

最佳答案

一些新的 Docker 功能使其比过去更加优雅和安全。新multi-phase builds让我们用一个 Dockerfile 来实现构建器模式。此方法将我们的凭据放入一个临时的“构建器”容器中,然后该容器构建一个不包含任何 secret 的新容器。

您可以选择如何将凭据放入构建器容器中。例如:

  • 使用环境变量:ENV creds=user:passcurl https://$creds@host.com
  • 使用 build-arg传递凭据
  • 将 ssh key 复制到容器中:COPY key/root/.ssh/id_rsa
  • 通过 Credential Helpers 使用您的操作系统自己的安全凭据

Multi-phase Dockerfile 有多个 FROM:

## Builder
FROM alpine:latest as builder
#
# -- insert credentials here using a method above --
#
RUN apk add --no-cache git
RUN git clone https://github.com/some/website.git /html

## Webserver without credentials
FROM nginx:stable
COPY --from=builder /html /usr/share/nginx/html

关于docker - 如何在构建期间将凭据带入 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37552980/

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