Docker之注册中心的使用与操作

news2024/11/15 19:36:10

一、Docker注册中心与仓库

Reastry 可译为注册中心注册服务器,是存放仓库的地方一个注册中心往往有很多仓库Docker默认的注册中心是Docker Hub,其可以通过浏览器访问,也可以使用docker search命令访问。

仓库是集中存放镜像文件的地方。每个仓库集中存放某一类镜像,往往包括多个镜像文件,不同的摊像通过不同的标签来区分,并通过“仓库名:标签”格式指定特定版本的镜像。

仓库名经常以两段的格式出现,如gitlab/gitlab-ce,前者是命名空间,后者是仓库名

根据所存储的镜像文件是否公开共享,可以将Docker仓库分为公开仓库私有仓库

二、Docker Hub

Docker Hub 是一个基于云的注册中心,它为镜像的检索、发布和变更管理、用户和团队协作、开发流程的自动化提供了集中式的资源服务,其主要功能:

  • 镜像仓库上传和下载容器镜像
  • 团队和组织:管理对容器镜像的私有仓库的访问。
  • 官方镜像:下载和使用由Docker 官方提供的高质量容器镜像。
  • 发布者镜像:下载和使用由外部供应商提供的高质量容器镜像。
  • 构建:从GitHub和Bitbucket这两个源代码托管平台自动构建容器镜像并将它们上传到Docker一山,当对源代码库进行修改时,会自动构建一个新镜像。
  • Webhooks:这是一个自动化构建特性,在一个镜像上传成功后,Webhooks 会触发操作,将Dncker Hub与其他服务进行整合。

根据镜像仓库的内容将它们分为顶级镜像仓库次级镜像仓库

三、官方仓库

Docker Hub包括大量的由厂商和贡献者向Docker提供的公开的、经过认证的仓库,能够确保仓库及时进行安全更新。因此,官方仓库有以下用途:

  • 提供必要的基础 OS 镜像仓库(如 UbuntuCentOS),作为大多数用户构建镜像的起点。
  • 为流行的编程语言运行时、数据存储和其他服务提供类似于平台即服务(PaaS)所提供的解决方案。
  • 作为学习Dockerfile的最佳实践,提供清晰的文档供其他Dockerfile作者参考。
  • 确保及时的安全更新

四、镜像加速器

Docker Hub 部署在境外服务器中,在国内访问可能会受到影响。为解决此问题,需要配置相应的国内镜像源来提高镜像的下载速度和稳定性。目前国内提供的 Docker Hub 镜像服务主要有阿里云加速器DaoCloud网易云镜像仓库时速云镜像服务等。

Docker 官方也提供了在我国的加速器,不用注册,直接使用加速器地址即可使用。使用该加速器的基本配置方法是修改/etc/docker/daemon.json文件,在其中加上以下语句。

 "registry-mirros":["https://registry.docker-cn.com"]
 ​
 # 保存退出后重启Docker,使配置生效
 systemctl daemon-reload
 systemctl restart docker

五、创建Docker Hub账号

自行查阅..........

六、使用第三方Docker注册中心

除了Docker Hub之外,如阿里云——容器镜像服务

1、搜索镜像

2、使用命名空间

  • 阿里云的容器镜像服务使用命名空间分区管理镜像仓库。
  • 命名空间是一些仓库的集合面。要将镜像推送(上传)到阿里云的Docker仓库中,必须先创建命名空间。
  • 这里默认允许用户直接推送镜像,系统自动根据仓库名称创建对应仓库,可以通过将自动创建仓库设置为关闭来禁用这一自动创建的功能。
  • 对于推送镜像自动创建的仓库,默认其是私有的,可以将默认仓库类型设置为公开,以使自动创建的仓库默认为公开仓库。

3、从命令行登录阿里云Registry

无论是使用docker pull命令从阿里云镜像仓库拉取镜像,还是通过docker push命令将镜像推送到阿里云镜像仓库,都必须先使用docker login命令登录阿里云 Registry

 [root@docker-2322030238 ~]# docker login registry.cn-hangzhou.aliyuncs.com
 Username: tb6824xxxx
 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

此处用户名是阿里云账号登录密码是在镜像仓库管理控制台设置的Registry登录密码,而不是阿里云账号登录密码。

4、将镜像推送到阿里云Registry

镜像在本地环境构建或是打包之后,就可以推送到Registry。 首先要确认登录的用户对指定的命名空间有写入权限,还要注意登录的Registry和当前操作镜像的Registry必须保持一致。

然后为镜像设置针对阿里云Registry的标签,其标签格式如下:

 Registry 域名/命名空间/仓库名称:[标签]

其中Registry域名为阿里云Registry的域名仓库名称就是镜像名称标签相当于镜像版本。在本示例中进行如下操作。

 docker tag hello-world registry.cn-hangzhou.aliyuncs.com/docker_dok/hello-world
 [root@docker-a ~]# docker push registry.cn-hangzhou.aliyuncs.com/docker_dok/hello-world
 Using default tag: latest
 The push refers to repository [registry.cn-hangzhou.aliyuncs.com/docker_dok/hello-world]
 ac28800ec8bb: Pushed 
 latest: digest: sha256:d37ada95d47ad12224c205a938129df7a3e52345828b4fa27b03a98825d1e2e7 size: 524

可以到阿里云Registry上查看新推送的仓库

5、从阿里云Registry拉取镜像

拉取公开的镜像,不需要登录阿里云Registry。先通过浏览器搜索到要拉取的镜像,获取其地址,再进行拉取操作

 # 拉取之前上传的镜像
 [root@docker-a ~]# docker pull registry.cn-hangzhou.aliyuncs.com/docker_dok/hello-world
 Using default tag: latest
 latest: Pulling from docker_dok/hello-world
 Digest: sha256:d37ada95d47ad12224c205a938129df7a3e52345828b4fa27b03a98825d1e2e7
 Status: Image is up to date for registry.cn-hangzhou.aliyuncs.com/docker_dok/hello-world:latest
 registry.cn-hangzhou.aliyuncs.com/docker_dok/hello-world:latest

七、自建Docker注册中心

因为安全可控性和Internet连接限制的问题,用户可以建立自己的注册中心提供镜像仓库注册服务。Docker Registry工具已经开源,并在Docker Hub提供官方镜像。

1、基于容器安装运行Registry

 # Docker Registry工具负责镜像仓库的管理
 [root@docker-a ~]# docker run -d -p 5000:5000 --restart=always --name myregistry -v /opt/data/registry:/var/lib/registry registry
 Unable to find image 'registry:latest' locally
 latest: Pulling from library/registry
 619be1103602: Pull complete 
 5daf2fb85fb9: Pull complete 
 ca5f23059090: Pull complete 
 8f2a82336004: Pull complete 
 68c26f40ad80: Pull complete 
 Digest: sha256:fb9c9aef62af3955f6014613456551c92e88a67dcf1fc51f5f91bcbd1832813f
 Status: Downloaded newer image for registry:latest
 ce61d322127cf4a53537051663d58891239cb19f328e52df85af641c87dc51d0
  • -v选项将主机的本地/opt/data/registry目录绑定到容器/var/ib/registry目录DockerRegistry默认存放镜像文件的位置)中,这样可以实现数据的持久化,将镜像仓库存储到本地文件系统中。
  • -p选项用于设置映射端口,这样访问主机的5000端口就能访问到Registry容器的服务
  • --restart选项设置重启策略,上面示例中值设置为always表示这个容器即使异常退出也会自动重启保持了Registry服务的持续运行
  • --name myregistry选项表示将该容器命名为myregistry,便于后续操作。

可以执行以下命令获取所有的镜像仓库来测试Docker Registry服务,下面示例中说明服务正常运行,刚建立的注册中心还没有任何镜像。

 [root@docker-a ~]# curl http://127.0.0.1:5000/v2/_catalog
 {"repositories":[]}

2、将镜像上传到自建的注册中心

上传镜像之前需要首先针对自建的注册中心设置相应的标签,其标签格式如下

[主机:端口]/仓库名称:[标签]

主机可以是自建注册中心的域名或IP地址端口就是该中心对外提供注册服务的端口

[root@docker-a ~]# docker tag hello-world 127.0.0.1:5000/hello-world:v1
# 上传镜像
[root@docker-a ~]# docker push 127.0.0.1:5000/hello-world:v1 
The push refers to repository [127.0.0.1:5000/hello-world]
ac28800ec8bb: Pushed 
v1: digest: sha256:d37ada95d47ad12224c205a938129df7a3e52345828b4fa27b03a98825d1e2e7 size: 524

# 进行测试
[root@docker-a ~]# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":["hello-world"]}

3、从注册中心下载镜像

[root@docker-2322030238 ~]# docker pull 127.0.0.1:5000/hello-world:v1
v1: Pulling from hello-world
Digest: sha256:d37ada95d47ad12224c205a938129df7a3e52345828b4fa27b03a98825d1e2e7
Status: Image is up to date for 127.0.0.1:5000/hello-world:v1
127.0.0.1:5000/hello-world:v1

4、配置注册中心地址

默认情况下,注册中心地址使用localhost127.0.0.1是没有问题的。

如果要使用主机的域名或IP 地址就会报出“http: server gave HTTP response toHTTPS client”这样的错误,这是因为Docker自从 1.3.X 版之后,访问 Docker 注册中心默认使用的是 HTTPS,但是搭建的私有注册中心默认使用的是HTTP。

最简单的解决方案是修改Docker客户端的/etc/docker/daemon.json文件,将要使用的注册中心域名或 IP 地址添加到 insecure-registries 列表中,以允许 Docker 客户端与该列表中的注册中心进行不安全的通信

# 本示例中定义如下:
“insecure-registries":"192.168.199.51:5000"]

# 如果该配置文件没有内容,则需要加上花括号,例如:
{“insecure-registries":"192.168.199.51:5000"]}

# 然后重启docker服务
systemctl restart docker

# 然后上传、下载操作就没有问题了
[root@docker-a ~]# docker pull 192.168.199.51:5000/hello-world:v1
v1: Pulling from hello-world
Digest: sha256:d37ada95d47ad12224c205a938129df7a3e52345828b4fa27b03a98825d1e2e7
Status: Image is up to date for 192.168.199.51:5000/hello-world:v1
127.0.0.1:5000/hello-world:v1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1616915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[图解]软件开发中的糊涂用语-04-为什么要追究糊涂用语

0 00:00:00,030 --> 00:00:05,620 今天呢,我们来说一个为什么要追究糊涂用语的问题 1 00:00:06,310 --> 00:00:06,548 2 00:00:06,548 --> 00:00:11,077 大家知道我们前些天都发了好几个视频 3 00:00:11,077 --> 00:00:13,461 追究这个糊涂用语 4 00…

Python中capstone实现反汇编可执行文件

1、基本案例——disasm函数 capstone有非常简单的API,所以使用该框架编写工具非常简单。接下来,下面的代码实现的功能是反汇编一些X86二进制文件,并打印出其对应的汇编语句。 代码展示: from capstone import * #将capstone模块…

列车tcn网络mvb从站接收代码流程解析

TCN-列车通信网络概述 机车车辆通信网络(TCN-列车通信网络)的基本组件是在整个列车单元中提供数据通信的有线列车总线(WTB)和用于在车辆或固定连接车辆组(组成)内进行数据交换(通信&#xff09…

免费https证书申请及部署教程

目前随着https访问的普及度逐渐提高,https证书的使用率也与日俱增,多数网站都会通过实现https来保障自身网站的数据传输安全,这时候就离不开SSL证书了,如何获取SSL证书,又如何将SSL证书部署在域名上,今天为…

外贸客户开发有用的软件

外贸客户开发过程中,选择合适的软件工具能够显著提升效率和效果。以下是一些对外贸客户开发非常有用的软件: CRM系统: Salesforce:全球领先的CRM平台,提供强大的客户关系管理、市场分析、销售自动化等功能,…

关于RS485通信失败的问题(忽视了使能引脚)

问题 如图,使用485进行串口通信时,程序一直卡在接收这句。 解决 检查串口引脚配置都没问题,因此怀疑是硬件的原因。 在RS485通信中,通常需要一个使能信号来控制半双工总线上的发送和接收状态,这个信号经常被标记为&…

ProbeManager:一款功能强大的入侵检测系统集中化管理工具

关于ProbeManager ProbeManager是一款功能强大的入侵检测系统集中化管理工具,该工具旨在简化检测探针的部署任务,并将其所有功能集中在一个地方。 一般来说,很多入侵检测系统(IDS)包括其软件及规则都不会定期更新&…

C++ | Leetcode C++题解之第43题字符串相乘

题目&#xff1a; 题解&#xff1a; class Solution { public:string multiply(string num1, string num2) {if (num1 "0" || num2 "0") {return "0";}int m num1.size(), n num2.size();auto ansArr vector<int>(m n);for (int i …

Java 网络编程之TCP(一):基于BIO

环境&#xff1a; jdk 17 IntelliJ IDEA 2023.1.1 (Ultimate Edition) Windows 10 专业版 22H2 TCP&#xff1a;面向连接的&#xff0c;可靠的数据传送协议 Java中的TCP网络编程&#xff0c;其实就是基于常用的BIO和NIO来实现的&#xff0c;本文先讨论BIO&#xff1b; BIO…

Pytorch 学习路程 - 1:入门

目录 下载Pytorch 入门尝试 几种常见的Tensor Scalar Vector Matrix AutoGrad机制 线性回归尝试 使用hub模块 Pytorch是重要的人工智能深度学习框架。既然已经点进来&#xff0c;我们就详细的介绍一下啥是Pytorch PyTorch 希望将其代替 Numpy 来利用 GPUs 的威力&…

STM32F103ZET6 封装 LQFP-144 ST意法 单片机芯片

STM32F103ZET6 是意法半导体&#xff08;STMicroelectronics&#xff09;生产的一款基于 ARM Cortex-M3 内核的 32 位微控制器。它具有高性能、低功耗的特点&#xff0c;广泛应用于各种嵌入式系统和工业应用中。STM32F103ZET6 的主要特点如下&#xff1a; 内核&#xff1a;ARM…

【每日力扣】41. 缺失的第一个正数 238. 除自身以外数组的乘积 189. 轮转数组

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害 41. 缺失的第一个正数 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为…

一个 Java 项目最多定义多少个线程池比较合理,有哪些限制因素需要考量?

在Java项目中&#xff0c;线程池是一种重要的并发机制&#xff0c;用于管理和执行多线程任务。然而&#xff0c;线程池的设计需要谨慎考虑&#xff0c;以确保系统的稳定性、性能和资源利用率。在决定一个Java项目中最多可以定义多少个线程池时&#xff0c;需要综合考虑多种因素…

IPRally巧用Google Kubernetes Engine和Ray改善AI

专利检索平台提供商 IPRally 正在快速发展&#xff0c;为全球企业、知识产权律师事务所以及多个国家专利和商标局提供服务。随着公司的发展&#xff0c;其技术需求也在不断增长。它继续训练模型以提高准确性&#xff0c;每周添加 200,000 条可供客户访问的可搜索记录&#xff0…

AI大模型探索之路-资料篇:大模型开发相关地址信息收藏

文章目录 前言一、OpenAI大模型二、LangChain开发框架三、RAGA评估框架四、GLM大模型五、搜索服务1. Tavily Search API 六、文本LLM大模型七、多模态LLM模型八、模型排行榜1.大模型评测体系&#xff08;司南OpenCompass&#xff09;2.大模型排行榜&#xff08;DataLearner AI&…

基于SSM的在线家教管理系统(含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的在线家教管理系统1拥有三种角色 管理员&#xff1a;学生管理、老师管理、发布管理、留言管理、回复管理、订单管理等教师&#xff1a;我的订单、我的关注、查看回复留言、登录注…

如何加盟共享wifi项目?了解套路有哪些?

自共享wifi项目推出在市场火爆后&#xff0c;各路资本都看到了该项目的广阔前景&#xff0c;纷纷开始研发程序&#xff0c;想要趁机分一杯羹。但对于普通人而言&#xff0c;独立研发程序显然不大现实&#xff0c;于是&#xff0c;共享wifi项目如何加盟便成为了绝大多数人最为关…

Sql Server 数据库:查询表结构脚本

查询脚本: SELECT CASE WHEN col.colorder 1 THEN obj.name ELSE END AS 表名, col.colorder AS 序号 , col.name AS 列名 , ISNULL(ep.[value], ) AS 列说明 , t.name AS 数据类型 , col.length AS 长度 , ISNULL(COLUMNPROPERTY(col.id, col.name, Scale), 0) AS 小数位数…

Python与数据库连接

新建表boss create table 创建表 Code import pymysqlcon pymysql.connect(hostlocalhost,\userroot,\password,\port3306,\dbbusiness) cursorcon.cursor() cursor.execute(create table if not exists boss(id int auto_increment primary key,name varchar(20)not null…

可持续发展:制造铝制饮料罐要消耗多少资源?

铝制饮料罐是人们经常使用的日常用品&#xff0c;无论是在购物、午休还是在自动售货机前选择喝什么的时候&#xff0c;很少有人会想知道装他们喝的饮料的罐子到底是如何制成的&#xff0c;或者这些铝罐的原材料是如何进出的。 虽然有化学品和一些合金进入铝饮料罐制造过程或成为…