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

Jenkins登录DockerHub推送镜像时遭遇pass未初始化错误

解决Jenkins推送Docker镜像到DockerHub的登录凭证存储问题

问题根源

Jenkins运行的系统用户(通常是jenkins)与你终端登录的用户不是同一个,终端中初始化的pass密码存储只对当前用户生效,Jenkins用户的pass未正确配置,导致Docker无法保存凭证。

具体解决方案

1. 确认Jenkins运行用户

执行命令查看Jenkins进程所属用户:

ps aux | grep jenkins

记录输出中的用户列(一般为jenkins)。

2. 切换到Jenkins用户并初始化pass

切换到Jenkins用户:

sudo su - jenkins

生成GPG密钥(一路回车使用默认配置即可):

gpg --gen-key

执行后复制输出中的GPG密钥ID(类似ABC123DEF456的字符串),然后初始化pass:

pass init <你的GPG密钥ID>

初始化完成后,手动执行docker login测试凭证存储:

docker login docker.io

输入DockerHub用户名和密码,确认无报错后退出Jenkins用户。

3. 改用文件存储Docker凭证(替代pass方案)

如果不想使用pass加密存储,可修改Docker配置,改用文件存储凭证:
编辑/etc/docker/daemon.json文件(不存在则创建):

{
  "credsStore": "file"
}

重启Docker服务使配置生效:

sudo systemctl restart docker

4. Jenkins任务中直接执行docker login(最直接方案)

在Jenkins构建任务的Shell步骤中,直接通过环境变量注入凭证执行登录:

echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin docker.io

其中DOCKER_USERNAME和DOCKER_PASSWORD需提前在Jenkins全局凭证中添加(类型为"用户名和密码"),并在任务配置中勾选"使用凭证",将凭证绑定到对应环境变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 09:39:53