成功解决docker从本地私库push或pull镜像时报x509: certificate signed by unknown authority

本文介绍了解决Docker登录私有仓库时出现的x509:证书由未知权威机构签名错误的方法。通过修改daemon.json文件添加私有仓库地址,并重启Docker服务来解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前景说明:    

        一般我们使用docker进行push或者build操作前,需指定对应镜像仓库地址,提前登录镜像仓库,才能进行后续操作,docker login  ......镜像仓库账号、密码、地址

        我遇到的是镜像仓库地址发生变化,我在原有服务器登录新的镜像仓库失败,后面发现是由于之前登录的旧的镜像仓库地址在daemon.json中没有修改,按以下操作执行后登录成功

成功解决docker从本地私库push或pull镜像时报x509: certificate signed by unknown authority
Docker

        ERROR:docker登录私库时提示 x509: certificate signed by unknown authority
        》》Docker的配置文件 daemon.json 详解(当需要配置多个镜像地址怎么写的问题)

Docker



ERROR:docker登录私库时提示 x509: certificate signed by unknown authority

 处理方法:

1、打开daemon.json,加入你的私库地址
sudo vi /etc/docker/daemon.json

{  
   "registry-mirrors": ["https://8f6a79wk.mirror.aliyuncs.com"],
   "insecure-registries":["私库地址"]

}

备注:一般只需要添加我们对应镜像仓库地址就好,例

 {  

   "insecure-registries":["https://8f6a79wk.mirror.aliyuncs.com"]
}

sudo vi /etc/docker/daemon.json

{  
   "registry-mirrors": ["https://8f6a79wk.mirror.aliyuncs.com"],
   "insecure-registries":["私库地址"]
}

2、重启docker

systemctl daemon-reload
systemctl restart docker.server 或者 systemctl restart docker

3、 Docker的配置文件 daemon.json 详解(当需要配置多个镜像地址怎么写的问题)

{
  "registry-mirrors": ["http://harbor.test.com"], #镜像加速地址
  "insecure-registries": ["harbor.test.com","registry.cn-shenzhen.aliyuncs.com"], # Docker如果需要从非SSL源管理镜像,这里加上。
  "max-concurrent-downloads": 10
}

部分参数(registry-mirrors、insecure-registries ...)修改,只要reconfigure(systemctl reload docker) 就生效:

### 解决 Docker 构建过程中的 x509: certificate signed by unknown authority 错误 当遇到 `x509: certificate signed by unknown authority` 错误时,通常是因为 Docker 客户端尝试连接到一个使用自签名证书的安全 HTTPS 服务器。为了使 Docker 能够信任该证书,可以采取以下几种方法之一。 #### 方法一:配置不安全注册表 对于特定的私有仓库,可以通过修改 `/etc/docker/daemon.json` 文件来允许 Docker 使用不安全的注册表: ```json { "insecure-registries": ["harbor.xxxx.com:1111"] } ``` 保存更改并重启 Docker 服务以应用设置: ```bash sudo systemctl restart docker ``` 这使得 Docker 可以忽略 SSL 验证并与指定的主机通信[^3]。 #### 方法二:导入 CA 证书至系统受信库 如果希望更安全地解决问题而不是禁用SSL验证,则应该获取用于签署目标站点证书的CA根证书,并将其添加到系统的可信证书存储中。具体操作取决于操作系统版本和类型;对于基于Debian/Ubuntu Linux发行版来说,可按照如下方式处理: 1. 将下载好的 `.crt` 者 `.pem` 格式的 CA 证书放置于 `/usr/local/share/ca-certificates/` 目录下; 2. 运行命令更新本地证书数据库: ```bash sudo update-ca-certificates ``` 完成上述步骤之后再次启动 Docker 应能正常工作而不再提示此错误消息[^4]。 #### 方法三:通过环境变量临时绕过校验 作为最后的选择,在开发环境中测试期间也可以考虑利用环境变量的方式暂时跳过 TLS 检查(注意这不是推荐的做法)。可以在执行任何涉及网络请求的操作之前设置这些变量: ```bash export DOCKER_TLS_VERIFY="0" export DOCKER_HOST="tcp://your-docker-host:port" ``` 这种方法仅适用于短期解决方案调试目的,生产环境下应始终启用完整的TLS保护措施[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值