从我拥有的仓库拉取Docker镜像时出现“拒绝访问”的错误提示

8
我构建了一个 Docker 镜像并将其推送到我的 Docker Hub 帐户下,并在本地删除。但是当我尝试拉取它时,出现以下错误:
"Error response from daemon: pull access denied for mightyspaj/dockerfile-assignment-1, repository does not exist or may require 'docker login'"
我已登录到拥有此镜像仓库的同一帐户中,并可以完美地执行其他任务(例如推送)。该仓库也肯定存在于 Docker Hub 上,但在我尝试拉取它时失败。
我尝试过以下操作: 1. 登出账户并重新登录 2. 重命名 config.json 并重新生成它 3. 使用 "docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock:ro docker sh" 运行隔离的 Docker 容器,然后登录到我的帐户并尝试拉取镜像 4. 删除并重新创建仓库
所有这些操作仍会产生相同的错误。我感到困惑。
值得注意的是,我的客户端和引擎版本均为 17.12.0-ce。我的操作系统是 Ubuntu 17.10(64位)。
控制台输出:
"docker login"
-> % docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: mightyspaj
Password: 
Login Succeeded

docker tag

-> % docker tag dockerfile-assignment-1:latest mightyspaj/dockerfile-assignment-1

docker push

-> % docker push mightyspaj/dockerfile-assignment-1                              
The push refers to repository [docker.io/mightyspaj/dockerfile-assignment-1]
8427a8e6a29f: Pushed 
655a921743e8: Pushed 
8aa44edb7524: Pushed 
60f1a2dc4cd8: Mounted from library/node 
9185fe936b87: Mounted from library/node 
e53f74215d12: Mounted from library/node 
latest: digest: sha256:6c68220ba84f13d0229ef4458f22369410bb98764b908a75be0849c3003de160 size: 1582

docker image rm

-> % docker image rm mightyspaj/dockerfile-assignment-1
Untagged: mightyspaj/dockerfile-assignment-1:latest
Untagged: mightyspaj/dockerfile-assignment-1@sha256:6c68220ba84f13d0229ef4458f22369410bb98764b908a75be0849c3003de160

docker image pull

-> % docker image pull mightyspaj/dockerfile-assignment-1
Using default tag: latest
Error response from daemon: pull access denied for mightyspaj/dockerfile-assignment-1, repository does not exist or may require 'docker login'

@TarunLalwani 是的,我提到过那个。 - Daniel
你使用的是哪个操作系统? - Tarun Lalwani
@TarunLalwani Ubuntu 17.10。我会编辑问题并包含它。 - Daniel
2
这里不应该有任何区别,但你需要在标签和推送命令中包含 latest。实际上,推送并不默认使用 latest,而是针对给定仓库的每个标签。 - BMitch
@BMitch 我试过了,为了保险起见,我指定了 latest 标签。问题依旧。 - Daniel
显示剩余2条评论
3个回答

1
我只能在将存储库公开后才能解决同样的问题。确保存储库是公开的,然后按照以下命令行中的指示进行操作: 首先从docker hub注销,然后再次登录。
1- docker注销
2- 使用以下命令登录:docker login --username=YOURUSERNAME(输入密码)
3- 使用以下命令拉取代码:docker pull repositoryName"/"imageName[:tag](如果没有包含“tag”,则默认值为“latest”)。完成拉取后,通过“docker images”命令检查图像是否已被拉取。完成拉取后,我将存储库设为私有。

0
如果你愿意的话,也可以通过这种方式完成任务。
1. 通过 Dockerfile 添加 CMD sleep 3600。 2. 运行命令 "Docker build -t my-app-project"。 3. 打开 Docker Desktop,并按照下面图片中的步骤进行操作。

enter image description here

按下“操作”部分的运行按钮,并执行以下步骤。

enter image description here

  1. 首先,指定项目容器名称
  2. 红色表示您的项目路径
  3. 绿色代表将作为卷的项目将在该位置(容器)运行

注意:如果端口设置为1或2,请分配数字号码

希望这个主题对您有所帮助


在Dockerfile中添加CMD["sleep","3600"]。 - Umit KOC

-3

此解决方案仅适用于私有 Docker 仓库!!

首先尝试登录您的私有仓库,例如:

docker login dockerrepo.example.com

如果您使用 Dockerfile 构建新镜像,基于您的私有仓库中的镜像,那么您必须在基础镜像前加上私有仓库的 URL:

FROM PRIVATE_REPO_URL + IMAGE_INFO

示例:

PRIVATE_REPO_URL --> dockerrepo.example.com
BASE_IMAGE --> samples/java/jdk:1.6

你的 Dockerfile 看起来像这样:

FROM dockerrepo.example.com/samples/java/jdk:1.6

1
该 OP 正在使用 Docker Hub,而不是私有注册服务器。 - BMitch
这并没有回答提问者的问题。 - BMitch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接