Docker仓库搭建

目录

一、Docker Hub

二、私有Registry仓库搭建

1、下载并开启仓库镜像registry

2、Registry加密传输

3、建立一个registry仓库

4、为客户端建立证书

5、测试

6、为仓库建立登录认证

三、Harbor仓库搭建


Docker 仓库(Docker Registry) 是用于存储和分发 Docker 镜像的集中式存储库。 它就像是一个大型的镜像仓库,开发者可以将自己创建的 Docker 镜像推送到仓库中,也可以从仓库中拉 取所需的镜像。 Docker 仓库可以分为公共仓库和私有仓库: 公共仓库,如 Docker Hub,任何人都可以访问和使用其中的镜像。许多常用的软件和应用都有在 Docker Hub 上提供的镜像,方便用户直接获取和使用。 例如,您想要部署一个 Nginx 服务器,就可以从 Docker Hub 上拉取 Nginx 的镜像。 私有仓库则是由组织或个人自己搭建和管理的,用于存储内部使用的、不希望公开的镜像。 比如,一家企业为其特定的业务应用创建了定制化的镜像,并将其存储在自己的私有仓库中, 以保证安全性和控制访问权限。 通过 Docker 仓库,开发者能够方便地共享和复用镜像,加速应用的开发和部署过程。

一、Docker Hub

Docker Hub 是 Docker 官方提供的一个公共的镜像仓库服务。 它是 Docker 生态系统中最知名和广泛使用的镜像仓库之一,拥有大量的官方和社区贡献的镜像。 以下是 Docker Hub 的一些关键特点和优势: 1. 丰富的镜像资源:涵盖了各种常见的操作系统、编程语言运行时、数据库、Web 服务器等众多应用 的镜像。 例如,您可以轻松找到 Ubuntu、CentOS 等操作系统的镜像,以及 MySQL、Redis 等数据库 的镜像。 2. 官方支持:提供了由 Docker 官方维护的一些重要镜像,确保其质量和安全性。 3. 社区贡献:开发者们可以自由上传和分享他们创建的镜像,促进了知识和资源的共享。 4. 版本管理:对于每个镜像,通常都有多个版本可供选择,方便用户根据需求获取特定版本。 5. 便于搜索:用户可以通过关键词轻松搜索到所需的镜像。

PULL & PUSH

pull原理

镜像拉取分为以下几步:

1.docker客户端向index发送镜像拉去请求并完成与index的认证

2.index发送认证token和镜像位置给dockerclient

3.dockerclient携带token和根据index指引的镜像位置取连接registry

4.Registry会根据client持有的token跟index核实身份合法性

5.index确认此token合法性

6.Registry会根据client的请求传递镜像到客户端

push原理

1.client向index发送上传请求并完成用户认证

2.index会发方token给client来证明client的合法性

3.client携带index提供的token连接Registry

4.Registry向index合适token的合法性

5.index证实token的合法性

6.Registry开始接收客户端上传过来的镜像

二、私有Registry仓库搭建

1、下载并开启仓库镜像registry

[root@docker-node1 ~]# docker pull registry

[root@docker-node1 ~]# docker run -d -p 5000:5000 --restart=always registry	#暴露端口

[root@docker-node1 ~]# docker tag nginx:v3 172.25.254.100:5000/nginx:v3
[root@docker-node1 ~]# docker push 172.25.254.100:5000/nginx:v3
The push refers to repository [172.25.254.100:5000/nginx]
Get "https://172.25.254.100:5000/v2/": http: server gave HTTP response to HTTPS client
#docker在上传的过程中默认使用https,但是我们并没有建立https认证需要的认证文件所以会报错

[root@docker ~]# vim /etc/docker/daemon.json
{
  "insecure-registries" : ["http://172.25.254.100:5000"]
}
[root@docker ~]# systemctl restart docker
#配置非加密端口

[root@docker-node1 ~]# docker push 172.25.254.100:5000/nginx:v3
[root@docker ~]# curl 172.25.254.100:5000/v2/_catalog
#上传并查看镜像
[root@docker-node1 ~]# docker tag busybox:latest 172.25.254.100:5000/busybox:latest
[root@docker-node1 ~]# docker push 172.25.254.100:5000/busybox:latest
[root@docker-node1 ~]# curl 172.25.254.100:5000/v2/_catalog

2、Registry加密传输

Docker Registry 私有库的加密传输主要作用在于确保镜像在从客户端推送到私有库或从私有库拉取到客户端的过程中,数据不会被恶意窃取或篡改。通过加密通信通道,能有效保护敏感的镜像内容,增强数据的安全性和保密性,为企业内部的容器化应用部署提供更可靠的保障。

[root@docker-node1 ~]# vim /etc/hosts
172.25.254.100  docker-node1.mlh.org reg.leoma.org
#为仓库地址做解析

[root@docker-node1 ~]# mkdir certs
[root@docker-node1 ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/leoma.org.key -addext "subjectAltName = DNS:reg.leoma.org" -x509 -days 365 -out certs/leoma.org.crt
[root@docker-node1 ~]# ls certs/
leoma.org.crt  leoma.org.key

3、建立一个registry仓库

[root@docker-node1 ~]# docker run -d -p 443:443 --restart=always \
> -v /root/certs:/certs \
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/leoma.org.crt \
> -e REGISTRY_HTTP_TLS_KEY=/certs/leoma.org.key registry:latest
2299907d38f0282eecc6c575f576ea7a6ff3775bc1daea0f9b011d61820997e5

-d:以守护式(后台)模式运行容器。
-p 443:443:将主机的 443 端口映射到容器的 443 端口。通常 443 端口用于 HTTPS 服务。
--restart=always:设置容器在退出或主机重启时自动重新启动。
-v /root/certs:/certs:将主机上的/root/certs目录挂载到容器内的/certs目录。这样可以让容器访问主机上存储的证书文件。
-e REGISTRY_HTTP_ADDR=0.0.0.0:443:设置环境变量,指定 Registry 服务监听的地址和端口为0.0.0.0:443,表示在所有网络接口上监听 443 端口。
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/leoma.org.crt:设置环境变量,指定 Registry 使用的 TLS 证书文件路径为容器内的/certs/leoma.org.crt。这个证书用于加密容器与客户端之间的通信。
-e REGISTRY_HTTP_TLS_KEY=/certs/leoma.org.key:设置环境变量,指定 Registry 使用的 TLS 私钥文件路径为容器内的/certs/leoma.org.key。私钥与证书配合使用进行加密通信。
registry:latest:指定要运行的容器镜像为registry:latest,即 Docker Registry 的最新版本镜像。

4、为客户端建立证书

[root@docker-node1 ~]# mkdir /etc/docker/certs.d/reg.leoma.org -p
[root@docker-node1 ~]# cp /root/certs/leoma.org.crt /etc/docker/certs.d/reg.leoma.org/ca.crt
[root@docker-node1 ~]# systemctl restart docker

5、测试

[root@docker-node1 ~]# docker tag nginx:v3 reg.leoma.org/nginx:v3
[root@docker-node1 ~]# docker push reg.leoma.org/nginx:v3

6、为仓库建立登录认证

#安装建立认证文件的工具包
[root@docker docker]# dnf install httpd-tools -y

#建立认证文件
[root@docker-node1 ~]# mkdir auth
[root@docker-node1 ~]# htpasswd -B auth/.htpasswd admin
[root@docker-node1 ~]# htpasswd -Bc auth/.htpasswd leo
New password:
Re-type new password:

Adding password for user admin
[root@docker-node1 ~]# cat auth/.htpasswd
leo:$2y$05$oj/d6bTWuHJhU3mt2c.lDuLlv/xOyI6GJ20o5zeJ0f3kndhldzfcW
admin:$2y$05$b6F2PMyS.GD4bhlE23kuSe8FbVVGr0OcgAWhN.IB3EnxFMGk9ALs.

auth/.htpasswd:指定要创建的密码文件的路径和名称。在这个例子中,密码文件将被创建在 auth 目录下,文件名为 .htpasswd

#添加认证到registry容器中
[root@docker-node1 ~]# docker run -d -p 443:443 --restart=always -v /root/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/leoma.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/leoma.org.key \
> -v /root/auth:/auth \
> -e REGISTRY_AUTH=htpasswd \
> -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
> -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/.htpasswd \
> registry

[root@docker-node1 ~]# docker login reg.leoma.org
Username: leo
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/#credential-stores

Login Succeeded

#上传
[root@docker-node1 ~]# docker tag nginx:latest reg.leoma.org/nginx:latest
[root@docker-node1 ~]# docker push reg.leoma.org/nginx:latest

测试
[root@docker-node1 ~]# curl -k https://reg.leoma.org/v2/_catalog -uleo:leo
{"repositories":["nginx"]}

三、Harbor仓库搭建

Harbor 是由vmware公司开源的企业级 Docker Registry 项目。 它提供了以下主要功能和特点: 1. 基于角色的访问控制(RBAC):可以为不同的用户和用户组分配不同的权限,增强了安全性和管理 的灵活性。 2. 镜像复制:支持在不同的 Harbor 实例之间复制镜像,方便在多个数据中心或环境中分发镜像。 3. 图形化用户界面(UI):提供了直观的 Web 界面,便于管理镜像仓库、项目、用户等。 4. 审计日志:记录了对镜像仓库的各种操作,有助于追踪和审查活动。 5. 垃圾回收:可以清理不再使用的镜像,节省存储空间。

[root@localhost ~]# vim /etc/hosts
172.25.254.111 reg.leoma.org
[root@localhost ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/leoma.org.key -addext "subjectAltName = DNS:reg.leoma.org" -x509 -days 365 -out certs/leoma.org.crt

[root@localhost ~]# tar zxf harbor-offline-installer-v2.5.4.tg
[root@localhost harbor]# cp harbor.yml.tmpl harbor.yml
[root@localhost harbor]# ls
common.sh  harbor.v2.5.4.tar.gz  harbor.yml  harbor.yml.tmpl  install.sh  LICENSE  prepare
[root@docker harbor]# vim harbor.yml
 hostname: reg.leoma.org
 certificate: /data/certs/leoma.org.crt
 private_key: /data/certs/leoma.org.key
 harbor_admin_password: leo

[root@localhost /]# mkdir data
[root@localhost harbor]# cp /root/certs/ /data/ -r
[root@localhost harbor]# ./install.sh --with-chartmuseum

docker compose down	#docker compose down命令用于停止和移除由 Docker Compose 管理的容器、网络、卷和镜像

docker compose up -d	#用于以分离模式(detached mode)启动由 Docker Compose 管理的容器

[root@localhost ~]# docker tag reg.leoma.org/nginx:v3 reg.leoma.org/leoma/nginx:v3
[root@localhost ~]# docker push reg.leoma.org/leoma/nginx:v3

私有仓库作为默认下载仓库

[root@localhost docker]# vim daemon.json
{
    "registry-mirrors" : ["http://reg.leoma.org"]
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

V3D——从单一图像生成 3D 物体

导言 论文地址:https://arxiv.org/abs/2403.06738 源码地址:https://github.com/heheyas/V3D.git 人工智能的最新进展使得自动生成 3D 内容的技术成为可能。虽然这一领域取得了重大进展,但目前的方法仍面临一些挑战。有些方法速度较慢&…

Part_one C/C++语言数据类型、运算符与表达式

1.0 编写第一个C程序 1.打开Visual Studio点击"创建新项目" 2.点击"空项目",并点击"下一步" 3.设置"项目名称"并"设置地址" 4.打开项目后,右击"源文件"并选择"添加"的"新建…

基于yolov8深度学习的120种犬类检测与识别系统python源码+onnx模型+评估指标曲线+精美GUI界面目标检测狗类检测犬类识别系统

【算法介绍】 基于YOLOv8深度学习的120种犬类检测与识别系统是一款功能强大的工具,该系统利用YOLOv8深度学习框架,通过21583张图片的训练,实现了对120种犬类的精准检测与识别。 该系统基于Python与PyQt5开发,具有简洁的UI界面&a…

程计软考题2-编译、解释程序翻译阶段

(一) 编译器和解释器的工作阶段 1.编译和解释与源程序的区别 分析:编译和解释是语言处理的两种基本方式。 编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段,以及符号表管理和出错处理模块。 解释过程在词法、语…

数字经济与新质生产力:地理信息与遥感视角下的深度分析

在数字化浪潮的推动下,我们正见证着生产力的一次历史性飞跃。数字经济如何重塑生产力的三大要素:劳动对象、劳动资料和劳动者?让我们来深度分析数字经济如何推动新质生产力的发展。 一、数字经济与地理信息的融合 地理信息与遥感技术是数字…

【数据结构】什么是红黑树(Red Black Tree)?

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 📌红黑树的概念 📌红黑树的操作 🎏红黑树的插入操作 🎏红黑树的删除操作 结语 📌红黑树的概念 我们之前学过了…

PyGWalker:让你的Pandas数据可视化更简单,快速创建数据可视化网站

1、PyGWalker应用: 在数据分析的过程中,数据的探索和可视化是至关重要的环节,如何高效地将分析结果展示给团队、客户,甚至是公众,是很多数据分析师和开发者面临的挑战,接下来介绍的两大工具组合——PyGWalker与Streamlit,可以帮助用户轻松解决这个问题,即使没有复杂的代…

cheese安卓版纯本地离线文字识别插件

目的 cheese自动化平台是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务,节省大量人工操作的时间。可以采用Vscode、IDEA编写,支持Java、Python、nodejs、GO、Rust、Lua。cheese也包含图色功能,识别…

HarmonyOS鸿蒙 Next 实现协调布局效果

HarmonyOS鸿蒙 Next 实现协调布局效果 ​ 假期愉快! 最近大A 的涨势实在是红的让人晕头转向,不知道各位收益如何,这会是在路上,还是已经到目的地了? 言归正传,最近有些忙,关于鸿蒙的实践系列有些脱节了,…

TCP --- 确认应答机制以及三次握手四次挥手

序言 在前一篇文章中,我们介绍了 UDP协议 (点击查看)👈,该协议给我们的感觉就两个字 — 简单,只是将我们的数据进行简单的添加报头然后发送。当然使用起来虽然简单,但是否能送到目的地,那就要看网络的状态了…

深度学习——线性神经网络(一、线性回归)

目录 一、线性回归1.1 线性回归的基本元素1.1.1 术语介绍1.1.2 线性模型1.1.3 损失函数1.1.4 解析解1.1.5 随机梯度下降1.1.6 模型预测 1.2 正态分布与平方损失 因为线性神经网络篇幅比较长,就拆成几篇博客分开发布。目录序号保持连贯性。 一、线性回归 回归&#x…

[Linux] Linux 的进程如何调度——Linux的 O(1)进程调度算法

标题:[Linux] Linux 的进程如何调度——优先级与进程调度 个人主页水墨不写bug 目录 一、前言 二、将要出现的概念 1.进程调度队列 2.位图 3.进程的优先级 三、Linux进程的调度过程 1.活动队列(*active指向的队列) 2.过期队列&#…

LeetCode[中等] 763. 划分字母区间

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 思路 贪心…

Centos 7.9 Kubeadm安装k8s1.20.11

一、环境 主机用途192.168.76.140k8s-master1192.168.76.141k8s-node1 二、设置yum源 由于系统已经关闭,可以用centos9尝试 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak vi /etc/yum.repos.d/CentOS-Base.repo# 使用阿里云的y…

【动态规划-分组背包】【hard】力扣2218. 从栈中取出 K 个硬币的最大面值和

一张桌子上总共有 n 个硬币 栈 。每个栈有 正整数 个带面值的硬币。 每一次操作中,你可以从任意一个栈的 顶部 取出 1 个硬币,从栈中移除它,并放入你的钱包里。 给你一个列表 piles ,其中 piles[i] 是一个整数数组,分…

FOC电机驱动开发踩坑记录

关键技术 SVPWM电机磁场控制电流采样park变换和Clark变换滑膜观测器(无感FOC) SVPWM电机磁场控制 SVPWM主要思想是通过精确的对UVW三相电流的分时控制,来控制转子的合成力矩,达到目标方向,常用的是6分区的设计&…

浅谈汽车智能座舱如何实现多通道音频

一、引言 随着汽车智能座舱的功能迭代发展,传统的 4 通道、6 通道、8 通道等音响系统难以在满足驾驶场景的需求,未来对于智能座舱音频质量和通道数会越来越高。接下来本文将浅析目前智能座舱如何实现音频功放,以及如何实现多路音频功放方案。…

C语言+单片机

今天内容有点水哈哈&#xff08;忙着练焊铁技术了嘻嘻&#xff09; C语言 简单学习了while语言以及其与for语言的区别和适用方法 .循环结构&#xff1a; 初始化语句条件判断句条件控制句 for语句 for(int1;i<100;i){执行条件} for (int i 1; i < 100; i) {printf(&quo…

leetcode每日一题day22(24.10.2)——准时到达的列车最小时速

思路&#xff1a;这种在有约束条件情况下&#xff0c;求最值或最符合要求的情况&#xff0c;首先是很容易想到&#xff0c;从时速为1开始往后找找到满足条件就输出&#xff0c;但这无疑工程量很大&#xff0c;每种可能的速度都要对列车数组进行遍历&#xff0c; 时间复杂度为C…

Stable Diffusion绘画 | 来训练属于自己的模型:LoRA模型验收

我们每次训练出来的模型&#xff0c;一般都会生成 20-30 个&#xff0c;至于哪个模型符合要求&#xff0c;较为理想呢&#xff1f; 接下来需要对每个 LoRA模型 进行逐一对比测试。 为了测试模型的泛化性&#xff0c;可选择使用一些较为特殊的提示词&#xff0c;看看各个模型对…