【问题标题】:Error response from daemon: Get https://192.168.1.5/v2/: x509: certificate signed by unknown authority来自守护进程的错误响应:Get https://192.168.1.5/v2/: x509: certificate signed by unknown authority
【发布时间】:2020-12-20 17:23:19
【问题描述】:

我设置并运行了一个私有 docker 注册表。它配置了自签名 SSL 证书并且运行良好。

我已经设法从远程机器登录,但首先我必须将根 ca 复制到客户端(ubuntu 18.04 LTS)并更新 ca 证书

cp ca.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates

这行得通,我可以登录没有问题。

现在我有另一个客户端,我想访问这个私有 docker 存储库。它是在另一个盒子上的 docker 中运行的 Jenkins 服务器。我也将 ca.crt 复制到此框中,并按照上述步骤操作。即使重新启动 docker 容器后,我仍然无法登录 docker。

来自守护进程的错误响应:Get https://192.168.1.5/v2/: x509: certificate signed by unknown authority

当我按照一个 Ubuntu 机器 (18.04 LTS) 上的步骤操作时,我完全感到困惑,它就像一个魅力。但是在 JENKINS 容器(Ubuntu Xenial 16.04)上,它给出了这个错误。

我还能检查什么?

【问题讨论】:

    标签: docker-registry


    【解决方案1】:

    嗯,对我来说,我遵循了关于在 docker 容器中设置 Jenkins 的官方文档:https://www.jenkins.io/doc/book/installing/docker/#setup-wizard,当我想将使用 Jenkins 构建的图像推送到我的私人注册表(Harbor 注册表)时,我遇到了这个问题自签名证书。

    我的环境如下: 我的虚拟机上安装了 docker 引擎(RHEL8) 我已经定义了一个包含 2 个服务的 docker-compose 文件:

    1. docker-dind:为了在 Jenkins 节点内执行 Docker 命令,这个命令将基于如下所示的 Dockerfile 构建:

    docker-dind Dockerfile 示例

    FROM docker:dind
    
    # Providing Harbor's and our CA's (our private registry) certs to Docker that is linked to Jenkins (docker:dind)
    
    RUN mkdir -p /etc/docker/certs.d/my.private.registry
    COPY certs/ /etc/docker/certs.d/my.private.registry
    PS: your certs/ folder should contain:
           ├── my.private.registry.cert  <-- yor Registry cert signed by your CA
           ├── my.private.registry.key   <-- your Registry key signed by your CA
           └── myRootCA.crt  <-- Certificate authority that signed the registry certificate
    

    1. jenkins-blueocean:Jenkins docker 容器,这个容器也基于文档中提到的 Dockerfile,我做了一些更改,以便 Jenkins 实例信任我的自签名 CA 颁发的所有证书(在您的 Dockerfile 中,添加以下行):

    jenkins-blueocean Dockerfile 示例

    # Copying our self-signed CA's certs so Jenkins-OS, Jenkins-JVM, and Jenkins-git will use it in the chain of trust 
    COPY certs/myRootCA.crt     /usr/local/share/ca-certificates
    
    # importing your CA-cert to Java keystore
    RUN keytool -import -noprompt -trustcacerts -alias myRootCA -file /usr/local/share/ca-certificates/urRootCA.crt -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit
    
    # update your system cert-store 
    RUN update-ca-certificates
    
    # config jenkins git to use your system store as a trusted one
    RUN git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt
    

    现在,运行:

    docker-compose up -d --build
    

    它应该可以解决问题。

    有关在 docker 容器中运行 Jenkins 的更多详细信息,请查看此 https://www.jenkins.io/doc/book/installing/docker/#setup-wizard

    有关集成您的私有注册表以便 docker 使用它的更多详细信息,请查看此(Harbor Registry)

    https://goharbor.io/docs/2.1.0/install-config/configure-https/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-28
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 2022-11-20
      • 1970-01-01
      • 2022-11-02
      • 2019-01-03
      相关资源
      最近更新 更多