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-storesLogin 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.ymlhostname: reg.leoma.orgcertificate: /data/certs/leoma.org.crtprivate_key: /data/certs/leoma.org.keyharbor_admin_password: leo[root@localhost /]# mkdir data
[root@localhost harbor]# cp /root/certs/ /data/ -r
[root@localhost harbor]# ./install.sh --with-chartmuseumdocker 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"]
}

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

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

相关文章

PHP程序如何实现限制一台电脑登录?

PHP程序如何实现限制一台电脑登录? 可以使用以下几种方法: 1. IP地址限制:在PHP中,可以通过获取客户端的IP地址,然后与允许登录的IP地址列表进行比对。如果客户端的IP地址不在列表中,就禁止登录。 “php $…

快速创建第一个Spring Boot 项目

一、介绍 Spring Boot 是一个开源的 Java 基础框架,它基于 Spring 框架,用于创建独立、生产级别的基于 Spring 的应用程序,你可以“跑起来”(run)你的 Spring 应用程序。Spring Boot 让基于 Spring 的应用开发变得更容…

基于单片机的两轮直立平衡车的设计

本设计基于单片机设计的两轮自平衡小车,其中机械部分包括车体、车轮、直流电机、锂电池等部件。控制电路板采用STC12C5A60S2作为主控制器,采用6轴姿态传感器MPU6050测量小车倾角,采用TB6612FNG芯片驱动电机。通过模块化编程完成了平衡车系统软…

leetcode:380. O(1) 时间插入、删除和获取随机元素

实现RandomizedSet 类: RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。bool remove(int val) 当元素 val 存在时&#xff0…

前端框架对比和选择指南

前端框架对比和选择指南 随着 Web 开发技术的快速发展,前端框架已经成为了现代 Web 开发的核心工具之一。它们为开发人员提供了快速构建高效、交互性强的应用的基础。当前流行的前端框架主要包括 React.js、Vue.js 和 Angular.js。在这篇技术博客中,我们…

如何创建一个docker,给它命名,且下次重新打开它

1.创建一个新的docker并同时命名 docker run -it --name one ubuntu:18.04 /bin/bash 这时候我们已经创建了一个docker,并且命名为"one" 2.关闭当前docker exit 3.这时docker已经终止了,我们需要使用它要重新启动 docker start one 4.现在可以重新打…

react crash course 2024(7) react router dom

安装 npm i react-router-dom 引入 import {Route,createBrowserRouter,createRoutesFromElements,RouterProvider} from react-router-dom 在app.jsx const router createBrowserRouter(createRoutesFromElements(<Route index element {<h1>My App</h1>…

基于51单片机的3路电压测量-proteus仿真

地址&#xff1a;https://pan.baidu.com/s/1PG2vzudc1QKHGSBfjPF0eQ 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectron…

金智维KRPA之Excel自动化

Excel自动化操作概述 Excel自动化主要用于帮助各种类型的企业用户实现Excel数据处理自动化&#xff0c;Excel自动化是可以从单元格、列、行或范围中读取数据&#xff0c;向其他电子表格或工作簿写入数据等活动。 通过相关命令&#xff0c;还可以对数据进行排序、进行格式…

QT 界面编程中使用协程

QT 界面编程中使用协程 一、概述二、集成2.1、编译 Acl2.2、将 Acl 库集成到 QT 项目中2.3、开始编写代码2.3.1、QT 程序初始化时初始化 Acl 协程2.3.2、在界面中创建协程2.3.3、界面程序退出前需要停止协程调度2.3.4、在界面线程中下载数据2.3.5、在协程中延迟创建窗口 2.4、效…

[sql-04] 连续出现至少三次的数字

数据准备 CREATE TABLE leecode_01 (id bigint not null AUTO_INCREMENT,num int DEFAULT NULL COMMENT 用户名,primary key(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT leecode(连续出现3次的数字)insert into leecode_01(num) values(12); insert into leecode_01…

C++入门基础 (超详解)

文章目录 前言1. C关键字2. C的第一个程序3. 命名空间3.1 namespace的定义3.2 命名空间的嵌套3.3 命名空间使用3.4 查找优先级总结 4. C输入和输出4.1 标准输入输出 (iostream库)4.2 文件输入输出 (fstream库)4.3 字符串流 (sstream库)4.4 C格式化输出4.5 std::endl和\n的区别 …

废物利用,三百块电脑如何升级并安装双系统便携使用

文章目录 引言最初的配置开始改装更换内存升级硬盘2.5 英寸 sata 固态msata 加装 升级电池其他的升级娱乐大师跑分 双系统安装前提条件设置 Bios安装 win 10安装 Manjaro时间同步问题 屏幕问题黑屏难开 引言 最近浏览 b 站的二手笔记本信息&#xff0c;想要整个二手笔记本玩玩…

imagickd写shell的技术学习

前言 没想到吧哥们&#xff0c;imagickd也能写shell&#xff0c;真是学到了不少&#xff0c;下面会具体分析是如何写shell的 基础知识 Imagick类 参考官方手册https://www.php.net/manual/zh/class.imagick.php 重点关注他的构造方法 (PECL imagick 2, PECL imagick 3) …

c++primer第十三章 类继承

本章内容&#xff1a;单个类就可以提供用于管理对话框的全部资源。通常&#xff0c;类库是以源代码的方式提供的&#xff0c;这意味着可以对其进行修改&#xff0c;以满足需求。但是&#xff0c;C-提供了比修改代码更好的方法来扩展和修改类。这种方法叫作类继承(class inheria…

手机/平板端 Wallpaper 动态壁纸文件获取及白嫖使用指南

Wallpaper 动态壁纸文件获取及使用指南 目录 壁纸文件获取手机 / 平板使用手机 / 平板效果预览注意事项PC/Mac 使用 1. 壁纸文件获取链接 链接&#xff1a;夸克网盘分享 复制链接到浏览器打开并转存下载即可。 &#xff08;主页往期视频的 4K 原图和 mpkg 动态壁纸文件&#xf…

Redis接口访问优化

说明&#xff1a;之前写过一篇使用Redis接口访问的博客&#xff0c;如下。最近有相关需求&#xff0c;把代码拿出来后&#xff0c;做了一些优化&#xff0c;挺有意思的&#xff0c;本文介绍在原基础上 使用Redis实现接口防抖 优化 总的来说&#xff0c;这次使用Redis实现接口…

IDEA 系列产品 下载

准备工作 下载 下载链接&#xff1a;https://www.123865.com/ps/EF7OTd-yVHnH 仅供参考 环境 演示环境&#xff1a; 操作系统&#xff1a;windows10 产品&#xff1a;IntelliJ IDEA 版本&#xff1a;2024.1.2 注意&#xff1a;如果需要其他产品或者版本可以自行下载&#xff0…

ESP32微信小程序SmartConfig配网

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 ESP32&微信小程序SmartConfig配网 前言一、SmartConfig是什么&#xff1f;二、使用乐鑫官方的smart_config例子1.运行照片 三、微信小程序总结 前言 本人是酷爱ESP32S3这…

C++系列-多态

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 多态 多态就是不同类型的对象&#xff0c;去做同一个行为&#xff0c;但是产生的结果是不同的。 比如说&#xff1a; 都是动物叫声&#xff0c;猫是喵喵&#xff0c;狗是汪汪&am…