我设置并运行了一个私有 docker 注册表。它配置了自签名 SSL 证书并且运行良好。
我已经设法从远程机器 docker 登录,但首先我必须将根 ca 复制到客户端(ubuntu 18.04 LTS)并更新 ca 证书
<块引用>cp ca.crt /usr/local/share/ca-certificates/ 须藤更新-ca-证书
这有效,我可以登录没有问题。
现在我有另一个客户端,我想访问这个私有 docker 存储库。它是在另一个机器上的 docker 中运行的 Jenkins 服务器。我也将 ca.crt 复制到此框中并按照上述步骤操作。即使在重新启动 docker 容器后,我仍然无法登录 docker。
<块引用>来自守护进程的错误响应:获取 https://192.168.1.5/v2/:x509:由未知机构签署的证书
当我按照一个 Ubuntu 机器 (18.04 LTS) 上的步骤进行操作时,我感到非常困惑,它的工作原理非常棒。但是在 JENKINS 容器 (Ubuntu Xenial 16.04) 上,它给出了这个错误。
我还能检查什么?
答案 0 :(得分:1)
好吧,对我来说,我遵循了有关在 docker 容器中设置 Jenkins 的官方文档:https://www.jenkins.io/doc/book/installing/docker/#setup-wizard,当我想将使用 Jenkins 构建的映像推送到我的私有注册表(Harbor 注册表)时,我遇到了这个问题自签名证书。
我的环境如下: 我已经在我的 VM (RHEL8) 上安装了 docker 引擎 我定义了一个包含 2 个服务的 docker-compose 文件:
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
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/