已安装 docker.sock 未存储登录信息

Mounted docker.sock login not stored

我正在使用 gitlab CI runner 构建一个 docker 图像,我想将它推送到我的私有注册表。 CI 运行器正在使用 docker:latest,我将 /var/run/docker.sock 安装到容器中。

docker login -u myuser -p mypass registry.mydomain.com:5000 有效,它说登录成功,但是当我尝试在下一个命令中推送构建的图像时,我得到 unauthorized: authentication required.

docker 在哪里存储登录到注册表?甚至可以推送到具有 docker 容器的自定义注册表,该容器安装到主机 docker.sock.

重现步骤:

docker run -ti -v /var/run/docker.sock:/var/run/docker.sock docker sh
docker login -u username -p password registry.myhost.com:5000
docker build -t registry.myhost.com:5000/namespace/user:latest .
docker push registry.myhost.com:5000/namespace/user:latest

Docker 将登录令牌存储到注册表:

${HOME}/.docker/config.json

如果您 运行 将所有命令作为来自同一用户的单个脚本,则可能存在限制性代理或防火墙,或者私有注册表在某种程度上配置错误。