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
相关产品推荐
相关产品推荐

