惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
有赞技术团队
有赞技术团队
www.infosecurity-magazine.com
www.infosecurity-magazine.com
大猫的无限游戏
大猫的无限游戏
爱范儿
爱范儿
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threatpost
V
Visual Studio Blog
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
人人都是产品经理
人人都是产品经理
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Cloudflare Blog
N
News and Events Feed by Topic
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
AWS News Blog
AWS News Blog
S
SegmentFault 最新的问题
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Spread Privacy
Spread Privacy
J
Java Code Geeks
博客园 - 聂微东
T
Tor Project blog
宝玉的分享
宝玉的分享
博客园 - 叶小钗
Webroot Blog
Webroot Blog
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Heimdal Security Blog
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
I
InfoQ
Security Latest
Security Latest
Martin Fowler
Martin Fowler
Hacker News: Ask HN
Hacker News: Ask HN
P
Privacy International News Feed
C
CERT Recently Published Vulnerability Notes
Latest news
Latest news
雷峰网
雷峰网
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cisco Blogs
H
Help Net Security
L
LINUX DO - 最新话题
L
LINUX DO - 热门话题

Liu Zijian's Blog | 一个技术博客

使用Certbot自动续签HTTPS证书 使用Filebeat采集Nginx日志到ES Python的协程 Python中的异常 Python中的类和对象 Python的函数 Python的数据结构,推导式、迭代器和生成器 Spring AI集成多模态模型 LangChain4j多模态 LangChain Tools工具使用 Python中的模块和包 Python全局环境和虚拟环境(venv) LangChain Prompt提示词工程 LangChain4j Tools工具使用 基于Dify搭建AI智能体应用 LangChain4j RAG检索增强生成 Spring AI实现MCP Server Spring AI集成MCP Client LangChain4j Prompt提示词工程 Spring AI使用知识库增强对话功能 Spring AI实现一个智能客服 Spring AI实现一个简单的对话机器人 实现MinIO数据的每日备份 自己实现一个DNS服务 简单理解AI智能体 大模型和大模型应用 LangChain开篇 LangChain4j开篇 一个解析Excel2007的POI工具类 DataPermissionInterceptor源码解读 TenantLineInnerInterceptor源码解读 BaseMultiTableInnerInterceptor源码解读 Spring AI开篇 SQL解析工具JSQLParser 芋道源码解读之多租户 芋道源码解读之数据权限 芋道源码解读开篇 Java实现将数据导出为Word文档 OA系统的天数该怎样计算 安装MySQL8 安装MySQL5.7 RockyLinux9环境下编译MySQL8 MySQL字符集及底层原理 Java实现LDAP登录 Docker Compose IPv4和IPv6 使用虚拟机安装一个K8s集群 使用GraalVM原生编译打包SpringBoot工程 Nginx防止目录穿越 Java线程的状态 Nginx防盗链设置 使用python将excel表格转换为SQL INSERT Redis的公共操作命令 Redis数据结构之Bitfleid Redis数据结构之Bitmap Redis数据结构之GEO Redis数据结构之Hash Redis数据结构之HyperLogLog Redis数据结构之List Redis数据结构之Set Redis数据结构之Stream Redis数据结构之String Redis数据结构之ZSet 使用python压缩图片 利用Python实现Hexo站点的持续集成 Nginx设置HTTPS监听 firewalld防火墙工具的使用 Linux信号(signal)机制 MySQL5.7x 主从复制 用IP自签发一个HTTPS证书 基于Hexo实现一个静态的个人博客 RockyLinux9环境下编译MySQL5.7 Docker离线安装 MySQL数据定义语言 Docker与联合文件系统 Docker的网络 Docker的镜像操作 MySQL存储过程 MyBatis-Plus开篇 MySQL变量 MySQL视图 MySQL事务 MySQL插入修改和删除 MySQL查询 MySQL系统命令 Docker的容器操作 Docker的安装和配置 Docker容器数据卷 浅谈OAuth2.0授权原理 JVM开篇 浅谈Linux(Unix)的I/O模型 一个通用的CloseableHttpClient工厂类 JUC可重入锁ReentrantLock JUC读写锁ReadWriteLock Java的单例 Java泛型 Java8的新特性 最近最少使用算法(LRU) MySQL函数 SpringBoot配置和启动
DockerHub
Liu Zijian · 2024-11-24 · via Liu Zijian's Blog | 一个技术博客

截至本篇博客发布时间,中国内地访问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/