You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JFrog本地Docker Artifactory无法推送镜像问题求助

JFrog Artifactory Docker仓库登录 TLS 错误排查与解决

问题场景

在Proxmox的Ubuntu 22.04 LXC环境部署JFrog Artifactory OSS,部署命令如下:

cd ~
mkdir jfrog
pwd
export JFROG_HOME=/root/jfrog/
mkdir -p $JFROG_HOME/artifactory/var/etc/
cd $JFROG_HOME/artifactory/var/etc/
touch ./system.yaml
chown -R 1030:1030 $JFROG_HOME/artifactory/var
chmod -R 777 $JFROG_HOME/artifactory/var
docker run --name artifactory -v $JFROG_HOME/artifactory/var/:/var/opt/jfrog/artifactory -d -p 8081:8081 -p 8082:8082 releases-docker.jfrog.io/jfrog/artifactory-oss:latest

创建ubuntutest Docker仓库后,从网络其他机器执行docker login docker-registry时触发错误:

Error response from daemon: Get "https://docker-registry:8082/v2/": remote error: tls: unrecognized name

核心原因

Docker客户端默认强制使用HTTPS访问私有仓库,当前配置存在以下问题之一:

  • Artifactory Docker仓库未配置匹配docker-registry主机名的有效SSL证书;
  • Docker客户端未信任Artifactory的SSL证书;
  • 客户端无法正确解析docker-registry主机名;
  • 仓库访问协议与客户端期望不匹配。

解决方案

1. 切换仓库为HTTP模式(测试环境快速解决)

登录Artifactory管理界面(http://docker-registry:8081),找到ubuntutest仓库:

  • 进入Repository Settings → Access Method,选择HTTP;
  • 在执行docker login的客户端机器上,编辑/etc/docker/daemon.json(无则创建):
{
  "insecure-registries": ["docker-registry:8082"]
}
  • 重启Docker服务:
sudo systemctl restart docker
  • 重新执行docker login docker-registry:8082。

2. 配置HTTPS证书(生产环境推荐)

步骤1:生成匹配主机名的证书

生成自签名证书(或使用CA签发证书),确保证书的**CN(通用名称)或SAN(主题备用名称)**包含docker-registry。

步骤2:配置Artifactory使用证书

  • 将证书文件(.crt)和密钥文件(.key)上传到$JFROG_HOME/artifactory/var/etc/security/ssl目录;
  • 修改文件权限:
chown -R 1030:1030 $JFROG_HOME/artifactory/var/etc/security/ssl
chmod -R 600 $JFROG_HOME/artifactory/var/etc/security/ssl/*
  • 编辑$JFROG_HOME/artifactory/var/etc/system.yaml,添加SSL配置:
shared:
  node:
    baseUrl: https://docker-registry:8082
  server:
    ssl:
      enabled: true
      certificate: "/var/opt/jfrog/artifactory/etc/security/ssl/your-cert.crt"
      certificateKey: "/var/opt/jfrog/artifactory/etc/security/ssl/your-key.key"
  • 重启Artifactory容器:
docker restart artifactory

步骤3:客户端信任证书

在执行docker login的客户端机器上:

  • 创建证书目录:
sudo mkdir -p /etc/docker/certs.d/docker-registry:8082
  • 将Artifactory的证书复制到该目录,命名为ca.crt;
  • 重启Docker服务后重新登录。

3. 验证主机名解析

确保客户端能正确解析docker-registry:

  • 执行ping docker-registry,检查是否返回Artifactory主机的IP;
  • 如果解析失败,编辑客户端/etc/hosts添加映射:
<Artifactory主机IP> docker-registry

日志排查方法

如果仍无法定位问题,直接查看Artifactory日志:

# 查看容器日志
docker logs artifactory
# 进入容器查看详细日志
docker exec -it artifactory cat /var/opt/jfrog/artifactory/logs/artifactory.log

内容的提问来源于stack exchange,提问作者Ilia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:32:45