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

一、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-reloadsystemctl 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.comUsername: tb6824xxxxPassword: WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://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-worldUsing default tag: latestThe 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-worldUsing default tag: latestlatest: Pulling from docker_dok/hello-worldDigest: sha256:d37ada95d47ad12224c205a938129df7a3e52345828b4fa27b03a98825d1e2e7Status: Image is up to date for registry.cn-hangzhou.aliyuncs.com/docker_dok/hello-world:latestregistry.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 registryUnable to find image 'registry:latest' locallylatest: Pulling from library/registry619be1103602: Pull complete 5daf2fb85fb9: Pull complete ca5f23059090: Pull complete 8f2a82336004: Pull complete 68c26f40ad80: Pull complete Digest: sha256:fb9c9aef62af3955f6014613456551c92e88a67dcf1fc51f5f91bcbd1832813fStatus: Downloaded newer image for registry:latestce61d322127cf4a53537051663d58891239cb19f328e52df85af641c87dc51d0
  • -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.mzph.cn/bicheng/1599.shtml

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

相关文章

html2Canvas截图包含滚动条解决思路

概况描述 在项目中使用html2Canvas进行截图时发现无法截取滚动条部分,前端是使用vue2的版本,网上找了很多方式都没效果,冷静思考后,给出解决办法。 解决思路 当我们截取的div容器的宽和高与内部的子容器div的宽和高不一样时&am…

如何写好单片机毕业设计的论文

如何写好单片机毕业设计的论文 引言 单片机毕业设计是大学生在专业课程中的重要组成部分,它不仅要求学生能够独立进行科学研究,还要求学生能够将自己的研究成果进行合理的总结和表达。本文将从选题、论文结构、写作技巧等方面,探讨如何写好单片机毕业设计的论文。 选题 …

Django模型的属性与方法

本节介绍Django模型的属性和方法,以及如何重写之前定义的模型方法等内容。 3.5.1 模型属性 Django模型中最重要的属性就是Manager,它是Django模型和数据库查询操作之间的接口,并且被用作从数据库当中获取实例的途径。如果Django模型中没有…

Web开发之v-model和model-value区别

v-model 和 model-value 是在处理表单数据绑定时使用的不同概念,它们分别服务于不同的目的和场景。 1、v-model 用于实现组件内部的双向数据绑定,特别适用于表单元素和支持双向绑定的自定义组件。语法简洁,可以直接在组件模板中使用&#x…

什么是Java Spring框架?

Java Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson在2002年提出并创建。它的主要目标是解决企业级编程开发中的复杂性,实现敏捷开发。Spring框架是一个轻量级的容器,主要用于管理bean的生命周期。它解决了开发者在J2EE开发中…

JAVA学习笔记27(异常)

1.异常 ​ *异常(Exception) ​ *快捷键 ctrl alt t 选中try - catch ​ *如果进行了异常处理,那么即使出现了异常,程序可以继续执行 1.1 基本概念 ​ *在Java语言中,将程序执行中发生的不正常情况称为"异常"(开发过程中的语…

CVE-2024-21887)Ivanti 远程命令注入漏洞

CVE-2024-21887)Ivanti 远程命令注入漏洞 一、漏洞简介 Ivаnti Cоnnесt Sесurе(9.х、22.х)和 Ivаnti Pоliсу Sесurе 的 Wеb 组件中存在一个命令注入漏洞,使得经过身份验证的管理员能够发送特别构建…

python scrapy 爬取豆瓣电影top250教程2

文章目录 scrapy top250教程1scrapy pipeline将数据写入数据库下载中间件middleware的使用从下层页面爬取详细电影信息运行代码scrapy top250教程1 python scrapy 爬取豆瓣电影top250教程 scrapy pipeline将数据写入数据库 mysql创建表use test; drop TABLE tb_top_movie

MySQL行格式(row format)

MySQL行格式(row format) 表的行格式决定了其行的物理存储方式,这反过来又会影响查询和 DML 操作的性能。随着单个磁盘页面容纳更多行,查询和索引查找可以更快地工作,缓冲池中需要的高速缓存内存更少,写出…

Nginx的ssl证书配置

http协议数据传输都是明文的。 https是httpssl,ssl是加密协议,通过证书来加密,安装了证书的网站才会用https来交互。 # 再nginx的配置文件的server这中配置 server {#listen 80;listen 443 ssl; #http默认端口是80, …

爬虫f12跳转和debugger检测

在空白页面的控制台运行解决重定向再复制url到网页 //解决重定向 (() > {window.onbeforeunload ()>{debugger;return false;}})();//构造方法无限debugger (() > {Function.prototype.constructor Function.prototype.constructor;Function.prototype.constructor…

nacos 2022.0.0.0 版本实现负载均衡及集群

一、loadbalancer实现负载均衡 新版本的nacos已经取消了对ribbon的支持&#xff0c;所以不能使用ribbon来实现nacos提供的负载均衡。 但是新版本中我们可以使用loadbalancer实现负载均衡。 二、导入loadbalancer坐标 1、原本的坐标&#xff1a; 在parent的pom.xml中 <p…

Python 学习笔记(十一)—— 异常处理

目录 一、异常简介 二、捕获异常 2.1 捕获特定类型的异常 2.2 捕获多个类型的异常 2.3 捕获所有类型的异常 2.4 使用多个except块处理不同类型的异常 三、异常的传递 3.1 异常在函数内部引发&#xff0c;并在函数外部捕获 3.2 异常在多层函数调用中传递 3.3 异常在类…

耐高温300度锅炉轴承,江苏鲁岳轴承制造的行业标杆

自润滑轴承-产品类型-耐高温轴承-不锈钢轴承-江苏鲁岳轴承制造有限公司。锅炉轴承&#xff0c;耐高温至200度-800度。 江苏鲁岳轴承制造有限公司&#xff0c;一家专注于锅炉轴承和耐高温轴承的研发与生产的企业&#xff0c;致力于为客户提供高质量、高性能的轴承解决方案。其中…

使用 OpenCV 测量物体尺寸

使用 OpenCV 测量物体尺寸 你是否曾经遇到过这样的问题&#xff1a;想要知道计算器的精确尺寸&#xff0c;但手头又没有专业的测量工具&#xff1f;别担心&#xff0c;今天我们就来教大家一个简单又实用的方法&#xff0c;通过一张A4纸就能估算出计算器的宽度和高度&#xff0c…

笔记:Python 选择结构练习题

文章目录 前言一、选择结构 是什么&#xff1f;二、练习题1.选择题2.填空题 总结 前言 选择结构在编程中扮演着至关重要的角色&#xff0c;它允许程序根据条件的满足与否选择不同的路径执行代码。在Python中&#xff0c;我们通常使用if语句来实现选择结构。if语句允许我们根据…

iZotope RX 10 音频修复和增强工具 mac/win

iZotope RX 10 for Mac是一款出色的音频修复和增强工具&#xff0c;凭借其卓越的音频处理技术&#xff0c;能够轻松应对各种音频问题。 无论是背景噪音、回声还是失真&#xff0c;RX 10都能精准去除&#xff0c;还原清晰纯净的音频。同时&#xff0c;它还提供了丰富的增强工具&…

【Linux系统编程】第六弹---权限的概念

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、什么是权限 2、权限的本质 3、Linux中的用户 4、Linux中文件的权限 4.1、文件访问者的分类(角色) 4.2、文件类型和访问权…

算法刷题记录 Day52

算法刷题记录 Day52 Date: 2024.04.20 lc 84. 柱状图中最大的矩形 // 单调栈 class Solution { public:int largestRectangleArea(vector<int>& heights) {// 对于每个柱子&#xff0c;我们考虑按当前柱子进行中心扩散&#xff0c;直到找到其左侧及其右侧&#xf…

Python 全栈安全(三)

原文&#xff1a;annas-archive.org/md5/712ab41a4ed6036d0e8214d788514d6b 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十一章&#xff1a;OAuth 2 本章内容 注册 OAuth 客户端 请求对受保护资源的授权 授权而不暴露身份验证凭据 访问受保护的资源 OAuth …