DockerHub

本文最后更新于 2025年5月1日

截至本篇博客发布时间,中国内地访问DockerHub需要接入外网

1.DockerHub概述

DockerHub(https://hub.docker.com/)由Docker公司官方推出,是世界上最大的容器注册中心,用于存储、管理和共享Docker镜像,从而简化了开发过程。

说白了就是我们可以制作好Docker镜像,以命名空间和版本号的层次保存在云端,共享给其他人使用,类似将项目代码托管在GitHub进行开源那样。

DockerHub的主要功能:

  • 无限公共存储库
  • 私有存储库
  • Webhook用于自动化工作流程
  • GitHub和Bitbucket集成
  • 并发和自动构建
  • 具有高质量、安全图像的可信内容

除了图形界面之外,还可以使用DockerHub API或实验性DockerHub CLI工具与DockerHub进行交互。

2.推送镜像到DockerHub

首先输入命令,登录到DockerHub,按照提示输入DockerHub用户名和密码。

[root@localhost opt]# 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: 130*****58@qq.com
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

开始尝试将将本地的镜像rockey8_jdk17推送到DockerHub

[root@localhost opt]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
rockey8_jdk17             1.0.0               fb5b6a2e5b81        3 months ago        642MB

首先要将本地自己制作好的镜像通过docker image tag命令为本地镜像创建一个带有命名空间等信息的新标签

docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • SOURCE_IMAGE[:TAG] 已有的本地镜像及其标签(TAG可选,默认是latest)。
  • TARGET_IMAGE[:TAG] 你想要创建的新标签的镜像名称(可以是新的仓库地址或新的标签)。

Docker镜像由多个部分组成,想要创建的新标签的镜像TARGET_IMAGE需要描述为:

[HOST[:PORT]/]NAMESPACE/REPOSITORY[:TAG]

例如:example.com:5000/team/my-app:2.0

  • HOST 指定镜像所在的registry位置。如果省略,Docker默认为DockerHub (docker.io)
  • PORT 端口号
  • NAMESPACE/REPOSITORY NAMESPACE命名空间通常代表用户或组织。REPOSITORY仓库用于标识特定的镜像。如果省略命名空间,Docker默认使用library,即为Docker官方镜像保留的命名空间,仓库是不可省略的
  • TAG 用于指定镜像特定版本,如果未提供标签,Docker默认使用latest

接下来,先在我的UID为changelzj的DockerHub账号上创建一个公共的仓库:rockey8_jdk17

然后将本地的rockey8_jdk17:1.0.0创建一个新标签changelzj/rockey8_jdk17:1.0.0,因为直接推到DockerHub故省略地址和端口

docker image tag别名docker tag

[root@localhost opt]# docker tag rockey8_jdk17:1.0.0 changelzj/rockey8_jdk17:1.0.0
[root@localhost opt]#
[root@localhost opt]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
changelzj/rockey8_jdk17   1.0.0               fb5b6a2e5b81        3 months ago        642MB
rockey8_jdk17             1.0.0               fb5b6a2e5b81        3 months ago        642MB

执行docker push命令推送到DockerHub的changelzj/rockey8_jdk17:1.0.0下

[root@localhost opt]# docker push  changelzj/rockey8_jdk17:1.0.0
The push refers to repository [docker.io/changelzj/rockey8_jdk17]
d453a92b860b: Pushed 
dc43c0708107: Pushed 
4f09ab92a26b: Pushed 
358121ca68a3: Pushed 
c1827ee010db: Mounted from library/rockylinux 
1.0.0: digest: sha256:1bbc652c97e5166c51c20a8934765c894958d2acb479f0647b34ef8a52c3a1d4 size: 1373

登录DockerHub管理页面,然后可以看到rockey8_jdk17仓库下已经有了一个1.0.0版本的镜像

在尝试把同一镜像创建一个1.0.2版本的标签,推送,可以推送成功,管理页面也能看到,但是命令执行提示层已经存在,可能是同一个镜像的缘故

[root@localhost ~]# docker tag rockey8_jdk17:1.0.0 changelzj/rockey8_jdk17:1.0.1
The push refers to repository [docker.io/changelzj/rockey8_jdk17]
d453a92b860b: Layer already exists 
dc43c0708107: Layer already exists 
4f09ab92a26b: Layer already exists 
358121ca68a3: Layer already exists 
c1827ee010db: Layer already exists 
1.0.1: digest: sha256:1bbc652c97e5166c51c20a8934765c894958d2acb479f0647b34ef8a52c3a1d4 size: 1373

3.DockerHub使用政策

为了防止资源滥用,保证公平使用,Docker官方对于DockerHub仓库数量和使用频率等都进行了限制。

截至本篇博客发布时间,对于免费用户,私有仓库最多只有一个,但可以享有无数个公共仓库,登录用户每6小时拉取次数最高200次,如果不登录就拉取镜像,则根据IP地址进行限制,6小时内每个IPv4地址或IPv6/64子网最多100次。

同时,Docker官方敬告:过高的数据传输、拉取速率或数据存储可能会导致流量限制或额外费用。为了确保资源的公平使用并维护服务质量,我们保留对数据和存储消耗过高的帐户施加限制或额外费用的权利。

官网文档具体介绍:https://docs.docker.com/docker-hub/usage/


"如果文章对您有帮助,可以请作者喝杯咖啡吗?"

微信二维码

微信支付

支付宝二维码

支付宝


DockerHub
https://blog.liuzijian.com/post/docker-dockerhub.html
作者
Liu Zijian
发布于
2024年11月24日
更新于
2025年5月1日
许可协议