docker - `docker buildx build` 使用私有(private) CA 签名的 TLS 证书引用 repo 时失败

标签 docker ssl buildx

当使用自签名 CA 签名的 TLS 证书基于私有(private)存储库中的图像构建 Docker 图像时,如果该 CA 已经在 macOS Keychain 或 Windows Trusted Certificate Store 中,则一切正常——只要当您使用 docker build 构建时。

但是,当使用 docker buildx build 时,找不到 CA,并且构建失败并出现证书错误。

考虑这个 Dockerfile:

FROM dockerhub.my.private.mirror.org/oraclelinux:8.6

使用 docker build 它工作正常:

% docker build .
...
 => CACHED [1/1] FROM dockerhub.my.private.mirror.org/oraclelinux:8.6
...

但是,使用 docker buildx build 它失败了:

% docker buildx build --load .
...
 => ERROR [internal] load metadata for dockerhub.my.private.mirror.org/oraclelinux:8.6
------
 > [internal] load metadata for dockerhub.my.private.mirror.org/oraclelinux:8.6:
------
Dockerfile:1
--------------------
   1 | >>> FROM dockerhub.my.private.mirror.org/oraclelinux:8.6
   2 |     
--------------------
error: failed to solve: dockerhub.my.private.mirror.org/oraclelinux:8.6: ↩
  failed to do request: Head "https://dockerhub.my.private.mirror.org/v2/oraclelinux/manifests/8.6": ↩
  x509: certificate signed by unknown authority

有谁知道如何配置 docker buildx 以在 macOS、Windows 和 Linux 上使用私有(private) CA 证书?

最佳答案

我的回答是基于这个:https://github.com/docker/buildx/blob/master/docs/guides/custom-registry-config.md

  1. 创建一个 buildkitd.toml 并配置您的私有(private) CA 证书:
[registry."your.dockerimagehost.example"]
  ca=["/home/downloads/mycacert.pem"]
  1. 创建一个 docker 构建器
docker buildx create --use --config buildkitd.toml
  1. 那么你的构建命令应该可以工作了

关于docker - `docker buildx build` 使用私有(private) CA 签名的 TLS 证书引用 repo 时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72894189/

相关文章:

mysql - Node.js 连接到 MySQL Docker 容器 ECONNREFUSED

java - 带有 maven jetty 插件的 applcation.properties

docker - 在多节点 Docker 构建中,层缓存存储在哪里?缓存垃圾回收何时发生?

docker - 标准 docker Push 有效,但 buildx(docker-container) 无效 - 导出到镜像时出错

docker - 如何将多架构 docker 镜像复制到不同的容器注册表?

Docker如何更改存储库名称或重命名图像?

selenium - 如何从 docker 容器在网格上运行 selenium UI 测试?

docker - 如何在运行时将数据源密码传递给 websphere 自由容器

ruby-on-rails - nginx 不在 ssl 中提供 rails Assets

python - NodeJS - SocketIO over SSL with websocket transport