Docker本地推送到hub,以及上传时遇到的问题解决

1.在本地创建一个 Dockerfile

FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl
CMD ["curl", "https://www.baidu.com"]

2.在本地构建 Docker 镜像

在创建本地docker镜像的时候[TAG] .和[TAG] /PATH/TO 需要注意dockerfile文件的文件命名需要固定格式{Dockerfile}

docker build -t [DOCKERHUB_USERNAME]/[IMAGE_NAME]:[TAG] .

其中 [DOCKERHUB_USERNAME] 是您的 Docker Hub 用户名,[IMAGE_NAME] 是您要创建的镜像名称,[TAG] 是您要使用的镜像标签。请注意,上面命令中的最后一个点表示将当前目录作为构建上下文。

[root@wide Dockerfile]# docker build -t widesky41/imagesky:0.1 .
[+] Building 2.0s (7/7)FINISHED                                                                                                                                 
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 207B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:latest 2.0s
=> [auth] library/ubuntu:pull token for registry-1.docker.io 0.0s
=> [1/2] FROM docker.io/library/ubuntu:latest@sha256:67211c14fa74f070d27cc59d69a7fa9aeff8e28ea118ef3babc295a0428a6d21 0.0s
=> CACHED [2/2] RUN apt-get update && apt-get install -y curl 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:7f0e5b0487416950a45faa1c20463da3b34ad0698f87f58436f5e68258ca8275 0.0s
=> => naming to docker.io/widesky41/imagesky:0.1     

3.登录和注销Docker Hub

[root@wide Dockerfile]# docker logout
Removing login credentials for <https://index.docker.io/v1/>
[root@wide Dockerfile]# 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: widesky41
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
<https://docs.docker.com/engine/reference/commandline/login/#credentials-store>

Login Succeeded

4.将本地镜像推送到 Docker Hub

接下来,使用以下命令将本地构建的镜像推送到 Docker Hub:

docker push [DOCKERHUB_USERNAME]/[IMAGE_NAME]:[TAG]
其中 [DOCKERHUB_USERNAME] 是您的 Docker Hub 用户名,[IMAGE_NAME] 是您要推送的镜像名称,[TAG] 是您要使用的镜像标签。例如:

[root@wide Dockerfile]# docker push widesky41/imagesky:0.1
The push refers to repository [docker.io/widesky41/imagesky]
fa9f6ebf8d7f: Pushed
b93c1bd012ab: Pushed
0.1: digest: sha256:f67a0ef55f716920be7ef10d908fad0dd856cc139ccf47a07ab53a0e8442b733 size: 741

在这里插入图片描述

5.上传镜像可能会出现的问题

  1. The push refers to repository [docker.io/library/docker]An image does not exist locally with the tag: docker
    这个错误提示表明在本地没有找到名为 docker 的镜像,因此无法将其推送到 Docker Hub 仓库。
    如果您没有构建名为 docker 的镜像,则需要首先使用 docker build 命令构建一个具有该名称的镜像。例如,如果您要构建一个名为 docker 的基础镜像,可以使用以下命令:

    docker build -t docker .
    这将构建一个名为 docker 的基础镜像,并将其添加到本地的镜像仓库中。接下来,您可以将其推送到 Docker Hub 或其他 Docker Registry:

    docker push docker
    请注意,Docker Hub 不允许向其官方仓库 library/ 推送自定义镜像。因此,如果您想要推送一个名为 docker 的镜像到 Docker Hub,您需要将其重命名为与您 的 Docker Hub 用户名相关联的仓库名,例如:

    docker tag docker your-dockerhub-username/docker
    docker push your-dockerhub-username/docker
    其中 your-dockerhub-username 是您的 Docker Hub 用户名。这将把名为 docker 的镜像标记为您的 Docker Hub 用户名下的仓库,并将其推送到 Docker Hub。

  2. 上传本地现有的镜像上传不了
    要将现有的 Docker 镜像上传到 Docker Hub,您可以遵循以下步骤:
    1.在 Docker Hub 上创建帐户,并在本地计算机上安装 Docker。

    2.使用 docker login 命令登录 Docker Hub。

    docker login
    

    3.确认您要上传的镜像已经存在于本地计算机中。您可以使用以下命令查看所有本地镜像列表:

    docker images
    4.标记要上传的镜像。该镜像必须包括您的 Docker Hub 用户名和一个名称以及标签,例如:username/custom-image:tag。
    这个是最关键的一步,镜像上传不了其实就是没有将这个现有的镜像打标签
    docker tag local-image:tag username/custom-image:tag
    5.使用 docker push 命令将镜像推送到 Docker Hub。

    docker push username/custom-image:tag
    请注意,在执行 docker push 命令之前,您需要先执行 docker tag 命令来标记镜像。这样做是因为 Docker 不允许将未标记的镜像上传到 Docker Hub。

  3. errors: denied: requested access to the resource is denied unauthorized: authentication required

    这些错误通常表示您无权访问所请求的资源。如果您正在尝试访问需要身份验证的资源,则可能需要提供有效的凭据以进行身份验证。

    以下是一些可能有助于解决此类问题的步骤:

    检查您是否有正确的访问权限。如果您没有权限,请联系管理员或拥有正确权限的人以获取帮助。

    确保您已经登录并提供了正确的凭据(例如用户名和密码)来进行身份验证。如果您不确定自己的凭据是否正确,请重置您的密码或联系管理员以获取帮助。

    如果您正在使用某个应用程序或工具来访问资源,请确保该应用程序或工具已被授权执行所需操作。如果未被授权,请联系管理员或拥有正确权限的人以获取帮助。

    检查所请求的资源是否存在。如果不存在,则可能会收到此类错误消息。请确认您的请求是否正确并重新提交请求。

    如果这些步骤都无效,您可能需要进一步检查网络连接或与管理员联系以获得更多帮助。

猜你喜欢

转载自blog.csdn.net/qq_44652591/article/details/130088248