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官方敬告:过高的数据传输、拉取速率或数据存储可能会导致流量限制或额外费用。为了确保资源的公平使用并维护服务质量,我们保留对数据和存储消耗过高的帐户施加限制或额外费用的权利。
"如果文章对您有帮助,可以请作者喝杯咖啡吗?"

微信支付

支付宝