【问题标题】:docker-compose pull results in x509: certificate signed by unknown authoritydocker-compose pull 导致 x509:证书由未知权威签署
【发布时间】:2019-04-22 16:33:15
【问题描述】:

我在尝试从 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 以使用公司 Root CA 的任何想法?

【问题讨论】:

标签: docker docker-compose


【解决方案1】:

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

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

  • 在 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 现在可以使用,并且可以下载弹性搜索图像

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

【讨论】:

  • 我必须使用完全限定名称创建目录:index.docker.io 而不是 docker.io
【解决方案2】:
  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

【讨论】:

  • 提取证书使用openssl s_client -showcerts -connect <your_registry>:<proper_port> < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <your_registry>.crt
【解决方案3】:

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

【讨论】:

  • 界面在最近的版本中有所改变。尝试在配置 json 中添加以下内容(在 Preferences > Daemon > Advanced 下:{ "insecure-registries" : ["somehost:5005"] }
【解决方案4】:

这可能发生在可能没有根 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. sudo systemctl restart docker.service重启Docker

【讨论】:

    猜你喜欢
    • 2018-04-22
    • 2023-03-12
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 2023-03-17
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多