当前位置: 首页 > news >正文

自签证书的dockerfile中from命令无法拉取镜像而docker的pull命令能拉取镜像

 问题现象:

docker pull images拉取镜像正常

dockerfile中的from命令拉取镜像就会报出证书错误。报错信息如下:

[bjxtb@wj-kvm-test-jenkins-6-243 ceshi_dockerfile]$ docker build .
[+] Building 0.4s (3/3) FINISHED                                                                                                                                                                   docker:default=> [internal] load build definition from Dockerfile                                                                                                                                                         0.0s=> => transferring dockerfile: 273B                                                                                                                                                                         0.0s=> ERROR [internal] load metadata for hub:10043/base_java/debian-jdk8-base:1.0.2                                                                                                            0.3s=> [auth] base_java/debian-jdk8-base:pull token for hub:10043                                                                                                                               0.0s
------> [internal] load metadata for hub:10043/base_java/debian-jdk8-base:1.0.2:
------
Dockerfile:1
--------------------1 | >>> FROM hub:10043/base_java/debian-jdk8-base:1.0.22 |     WORKDIR /hskj/app3 |     
--------------------
ERROR: failed to solve: hub:10043/base_java/debian-jdk8-base:1.0.2: failed to resolve source metadata for hub.:10043/base_java/debian-jdk8-base:1.0.2: failed to authorize: failed to fetch oauth token: Post "https://hub:10043/service/token": tls: failed to verify certificate: x509: certificate signed by unknown authority

尝试各种方法:

/etc/docker/daemon.json文件添加如下参数

insecure-registries

/etc/docker/certs.d/配置免密

两种往上常见方式都无果,最终找到一篇文章:

解决思路:把证书直接用openssl拉下来,然后加入到系统系统证书中,然后使用update-ca-certificates更新,最后重启docker服务,成功!!

方法1:

$ echo -n | openssl s_client -showcerts -connect dseasb33srnrn.cloudfront.net:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /usr/local/share/ca-certificates/cloudfront.crt
$ update-ca-certificatesUpdating certificates in /etc/ssl/certs... 1 added, 0 removed; done.Running hooks in /etc/ca-certificates/update.d....Adding debian:cloudfront.pemdone.done.

 方法2:

$ echo -n | openssl s_client -showcerts -connect dseasb33srnrn.cloudfront.net:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/ssl/certs/ca-certificates.crt

方法3:

自签证书换为商用证书也可解决。 

上面的方式之所以可以搞定大多数由于公司替换https证书造成的错误,是因为很多程序是使用系统默认的证书(路径)。

对于一些特殊的程序,比如python pip,不使用系统默认的证书,而是使用自己的路径,可以强制它使用*方式2*生成的证书。

参考连接:docker X509 证书错误的终极解决办法 - 孤独的居士 - 博客园

http://www.lryc.cn/news/527750.html

相关文章:

  • 【MySQL】--- 复合查询 内外连接
  • QT TLS initialization failed
  • 系统学英语 — 句法 — 复合句
  • 指针的介绍2前
  • 16.Word:石油化工设备技术❗【28】
  • Python-基础环境(01) 虚拟环境,Python 基础环境之虚拟环境,一篇文章助你完全搞懂!
  • Dest1ny漏洞库:用友 U8-CRM 系统 ajaxgetborrowdata.php 存在 SQL 注入漏洞
  • java.sql.Date 弃用分析与替代方案
  • HarmonyOS:状态管理最佳实践
  • 如何提高新产品研发效率
  • MongoDB平替数据库对比
  • JavaScript系列(46)-- WebGL图形编程详解
  • YOLO目标检测4
  • 十三先天记
  • 【论文阅读笔记】“万字”关于深度学习的图像和视频阴影检测、去除和生成的综述笔记 | 2024.9.3
  • Android AOP:aspectjx
  • 前端【11】HTML+CSS+jQUery实战项目--实现一个简单的todolist
  • 2025课题推荐——USBL与DVL数据融合的实时定位系统
  • 滑动窗口详解:解决无重复字符的最长子串问题
  • 第05章 11 动量剖面可视化代码一则
  • MySQL的复制
  • Cpp::IO流(37)
  • 基于OpenCV实现的答题卡自动判卷系统
  • 如何将电脑桌面默认的C盘设置到D盘?详细操作步骤!
  • 二十三种设计模式-享元模式
  • 算法【有依赖的背包】
  • A7. Jenkins Pipeline自动化构建过程,可灵活配置多项目、多模块服务实战
  • 飞牛NAS新增虚拟机功能,如果使用虚拟机网卡直通安装ikuai软路由(如何解决OVS网桥绑定失败以及打开ovs后无法访问飞牛nas等问题)
  • 蓝桥杯例题四
  • 八股——Java基础(四)