docker-在 x509 中编写拉取结果:由未知授权机构签名的证书

docker-compose pull results in x509: certificate signed by unknown authority

我在尝试从 dockerhub 中提取 elastcisearch 图像时遇到以下错误。

docker-compose pull
Pulling elasticsearch (elasticsearch:2.2.0)...
Pulling repository docker.io/library/elasticsearch
ERROR: Error while pulling image: Get https://index.docker.io/v1/repositories/library/elasticsearch/images: x509: certificate signed by unknown authority
Failed to run with docker-compose

我的公司有一个中间根 CA,我怀疑它导致了问题。我应该如何配置 Docker 以使用公司根 CA 有什么想法吗?

我通过将 CA root .crt 文件添加到以下目录解决了这个问题:/etc/docker/certs.d/docker.io

使用 Docker version 1.10.0, build 590d5108docker-compose version 1.6.0, build d99cad6 解决 Unbuntu 14:04 的步骤:

  • 在 Internet Explorer 中浏览至 docker.io/library/elasticsearch 并使用 DER 格式导出公司中间根 CA 证书
  • 在 Ubuntu mkdir -p /etc/docker/certs.d/docker.io/
  • cp <cert from step one>.crt /etc/docker/certs.d/docker.io/
  • service docker restart
  • docker-compose pull 现在可以使用和 elasticsearch 图片下载

更多信息在这里:https://docs.docker.com/engine/security/certificates/

在本机 docker 上(我在 mac 上),这可以通过添加到不安全的注册表配置来解决。 首选项 > 高级 > 不安全注册表

  1. 使用 Firefox 导出 SSL 证书。
    • 在 Firefox 中点击 URL
    • 如果您看到警告或 URL 栏上的锁,请单击高级。
    • 导出证书(在详细信息选项卡中)
    • 假设证书文件名为 your.ssl.server.name.crt
  2. 将 CA 证书复制到 /usr/local/share/ca-certificates
  3. sudo update-ca-certificates
  4. sudo service docker restart

这可能发生在可能没有根 CA 签名证书(这些证书可能是自签名的)的本地或用户注册表中。您可以使用以下步骤使用这些注册表:

  1. sudo systemctl edit docker.service

  2. 像这样添加注册表:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd <some params...> --insecure-registry <your registry here> <other params...>
  1. 保存文件。
  2. 使用 sudo systemctl daemon-reload
  3. 重新加载配置
  4. sudo systemctl restart docker.service
  5. 重新启动 Docker