Docker仓库搭建

server/2025/2/7 23:55:04/

[root@server1 ~]# docker push 852791073/webserver:latest


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210125122802637.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  我们在dockerhub上已经成功看到刚才我们上传的webserver了  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210125123056478.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)### 3.registry工作原理一次docker pull 或 push背后发生的事情  index服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registry下载镜像,在下载过程中 registry会去index校验客户端token的合法性,不同镜像可以保存在不同的registry服务上,其索引信息都放在index服务上。Docker Registry有三个角色,分别是index、registry和registry client。* index  负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。  Web UI  元数据存储  认证服务  符号化
* registry  是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。
* Registry Client  Docker充当registry客户端来维护推送和拉取,以及客户端的授权。## 二、搭建私有仓库docker hub虽然方便,但是还是有限制  需要internet连接,速度慢  所有人都可以访问  由于安全原因企业不允许将镜像放到外网  好消息是docker公司已经将registry开源,我们可以快速构建企业私有仓库### 1.下载registry镜像

[root@server1 nginx]# docker pull registry
[root@server1 nginx]# docker images registry
[root@server1 nginx]# docker history registry:latest


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210125135007823.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)我们看到registry的端口是5000,数据卷是/var/lib/registry 所以我们需要做端口映射,把数据卷指定挂载到宿主机### 2.端口映射

[root@server1 nginx]# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry
将本地的镜像上传到仓库
[root@server1 registry]# docker tag yakexi007/game2048 localhost:5000/game2048:latest ## 改名
[root@server1 registry]# docker push localhost:5000/game2048


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124100103483.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  查看是否上传成功

[root@server1 registry]# curl localhost:5000/v2/_catalog


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124100145930.png)### 5.为Docker仓库添加证书加密功能链接:参考[docker参考文档]( )  实验环境,这里我们需要重新开一台虚拟机。server2,并且下载docker  我们测试从远端拉取我们上传的镜像,发现拉取不到,这是没有相应的注册信息  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126105143762.png)#### 1.部署普通的HTTP注册表编辑daemon.json文件,其默认位置 /etc/docker/daemon.json , 重新启动Docker以使更改生效。

[root@server2 ~]# cd /etc/docker/
[root@server2 docker]# vim daemon.json
{
“insecure-registries” : [“myregistrydomain.com:5000”]
}
[root@server2 docker]# systemctl reload docker.service


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126103837882.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  这是我们再次尝试拉取,成功拉取

[root@server2 docker]# docker pull 172.25.1.1:5000/webserver


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126105351812.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)#### 2.使用自签名证书使用自签名证书,这比不安全的注册表解决方案更安全  这里还需要将刚才编写的注册巍峨文件删除

[root@server2 docker]# rm -fr daemon.json


* 生成自己的证书

[root@server1 ~]# mkdir -p certs
[root@server1 ~]# openssl req \

-newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key
-x509 -days 365 -out certs/westos.org.crt


生成证书(域名westos.org要求在主机上有解析)  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124111221428.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  如果注册表当前正在运行,请停止它。

[root@server1 ~]# docker stop registry
[root@server1 ~]# docker rm registry


参考:[官方文档]( )

[root@server1 ~]# vim /etc/hosts ##加上reg.westos.org解析 ,server2相同
将westos.org…crt文件复制到 /etc/docker/certs.d/reg.westos.org/ca.crt每个Docker主机上。您无需重启Docker。
[root@server1 ~]# mkdir /etc/docker/certs.d/reg.westos.org -p
[root@server2 ~]# mkdir /etc/docker/certs.d/reg.westos.org -p
[root@server1 ~]# cp certs/westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt
拷贝证书到其他docker主机
[root@server1 ~]# cd /etc/docker/certs.d/reg.westos.org/
[root@server1 reg.westos.org]# scp ca.crt server2:/etc/docker/certs.d/reg.westos.org/
重新启动注册表,将其定向为使用TLS证书。此命令将certs/目录绑定安装到容器中的/certs/,并设置环境变量,该变量告诉容器在何处找到domain.crt anddomain.key文件。注册表在端口443(默认的HTTPS端口)上运行。
[root@server1 ~]# docker run -d --name registry -p 443:443 -v /opt/registry:/var/lib/registry -v “$(pwd)”/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key registry


测试:  server1上传,server2下载

[root@server1 ~]# docker tag busybox:latest reg.westos.org/busybox:latest
[root@server1 ~]# docker push reg.westos.org/busybox:latest
[root@server2 ~]# docker pull reg.westos.org/busybox:latest


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126112914666.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126113015828.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)#### 3.本地基本身份验证实现访问限制的最简单方法是通过基本身份验证(这与其他Web服务器的基本身份验证机制非常相似)。本示例使用本机基本身份验证htpasswd来存储机密。  参考:https://docs.docker.com/registry/deploying/#get-a-certificate创建一个密码文件

[root@server1 ~]# yum install -y httpd-tools
[root@server1 ~]# mkdir auth
[root@server1 ~]# htpasswd -B -c auth/htpasswd sun
[root@server1 ~]# docker rm -f registry ## 停止注册表。
[root@server1 ~]# docker run -d --name registry -p 443:443 -v /opt/registry:/var/lib/registry -v “ ( p w d ) " / c e r t s : / c e r t s − e R E G I S T R Y H T T P A D D R = 0.0.0.0 : 443 − e R E G I S T R Y H T T P T L S C E R T I F I C A T E = / c e r t s / w e s t o s . o r g . c r t − e R E G I S T R Y H T T P T L S K E Y = / c e r t s / w e s t o s . o r g . k e y − v " (pwd)"/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key -v " (pwd)"/certs:/certseREGISTRYHTTPADDR=0.0.0.0:443eREGISTRYHTTPTLSCERTIFICATE=/certs/westos.org.crteREGISTRYHTTPTLSKEY=/certs/westos.org.keyv"(pwd)”/auth:/auth -e “REGISTRY_AUTH=htpasswd” -e “REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm” -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry

使用基本身份验证启动注册表。


注意路径问题测试上传镜像

[root@server1 ~]# docker tag mario:latest reg.westos.org/mario:latest
[root@server1 ~]# docker push reg.westos.org/mario:latest


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124111649940.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  我们发现没有认证,所以不能上传。  尝试从注册表中提取镜像,或将图像推入仓库。这些命令都是失败的。需要登录到注册表。

[root@server1 ~]# docker login reg.westos.org


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124111633322.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  再次尝试上传,显示上传成功。  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124111710247.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  尝试远端拉取镜像,显示失败,没有认证信息。

[root@server2 ~]# docker pull reg.westos.org/mario


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124111742743.png)  登陆

[root@server2 ~]# docker login reg.westos.org
Username: sun
Password:
[root@server2 ~]# docker pull reg.westos.org/mario


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124112116529.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)## 二、harbor仓库软件下载:[harbor-offline]( )  部署:(依赖性 docker 17.06.0-ce+ and docker-compose 1.18.0+)链接: [harbor-offline-install]( )提取码: 2azb### 1.软件下载

[root@server1 ~]# tar zxf harbor-offline-installer-v1.10.1.tgz
[root@server1 ~]# cd harbor/
[root@server1 harbor]# mv docker-compose-Linux-x86_64-1.27.0 /usr/local/bin/docker-compose
[root@server1 harbor]# chmod +x /usr/local/bin/docker-compose
[root@server1 harbor]# docker rm -f registry
[root@server1 ~]# cp -r certs/ / ##因为下面配置文件里我选择了放在/下,所以这里将证书复制到根下了。


### 2.修改配置信息

[root@server1 harbor]# vim harbor.yml ## 修改内容如下
hostname: reg.westos.org
certificate: /certs/westos.org.crt
private_key: /certs/westos.org.key
harbor_admin_password: westos


![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012413094352.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)

[root@server1 harbor]# ./install.sh ##进入默认,不加任何选项


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124130853703.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)

[root@server1 harbor]# docker-compose ps
[root@server1 harbor]# docker ps


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124131106959.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124131119676.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)### 3.登陆到web页面![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126224102885.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126224204287.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126224308100.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124131133725.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  推送的路径查看  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126224402886.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)### 4.重新获取认证

[root@server1 harbor]# docker logout reg.westos.org
Removing login credentials for reg.westos.org
[root@server1 harbor]# docker login reg.westos.org
Username: admin
Password:
此处账号密码和配置文件中相同,就是登陆web页面的账号密码。


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124131955563.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)### 5.上传镜像

[root@server1 harbor]# docker tag mario:latest reg.westos.org/library/mario:latest
[root@server1 harbor]# docker push reg.westos.org/library/mario:latest


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124132025264.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  到web页面查看是否上传成功  ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012413204386.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126225222155.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  在远端拉取镜像时,我们可以直接指定我们的私有仓库进行下载,如果私有仓库中没有,再从网络上下载。  这里我们编辑一下文件

[root@server2 ~]# cd /etc/docker/
[root@server2 docker]# vim daemon.json
{
“registry-mirrors” : [“https://reg.westos.org”]
}
[root@server2 docker]# systemctl reload docker.service
[root@server2 docker]# docker pull mario


下图中我们可以看到是从我们的私有仓库中下载的  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124132636861.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  查看日志可以看到下载情况。  ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012413270066.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)### 6加入选项重新下载配置

[root@server1 harbor]# docker-compose down ##停止并删除
[root@server1 harbor]# ./prepare ##清理配置信息


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126232834321.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210126232852364.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)

[root@server1 harbor]# ./install.sh --with-notary --with-clair --with-chartmuseum
内容信任 ,镜像扫描,


http://www.ppmy.cn/server/165799.html

相关文章

基于 llama-Factory 动手实践 Llama 全参数 SFT 和 LoRA SFT

一、llama-Factory:你的 Llama 模型 SFT 工厂 llama-Factory 是一个开源的、用户友好的工具,专门用于对 Llama 系列模型进行微调。它提供了简洁的界面和强大的功能,让你无需复杂的代码编写,就能轻松完成 Llama 模型的 SFT 任务&a…

?和.和*在正则表达式里面的区别

在正则表达式中,?、. 和 * 是三种非常重要的元字符,它们各自有不同的功能和用途,以下是它们的区别: ?(问号) 功能:表示前面的元素(字符、字符集、分组等)是可选的&…

Text2Sql:开启自然语言与数据库交互新时代(3030)

一、Text2Sql 简介 在当今数字化时代,数据处理和分析的需求日益增长。对于众多非技术专业人员而言,数据库操作的复杂性常常成为他们获取所需信息的障碍。而 Text2Sql 技术的出现,为这一问题提供了有效的解决方案。 Text2Sql,即文…

【图像处理】-不同的图像存储格式

看到了前面的基础操作介绍,我们再了解一下不同图像的存储格式,更有利于我们理解图像处理的原理。 图像存储格式详细介绍 1. BMP(BitMap Picture) 发展历史 BMP是一种位图文件格式,由微软公司于1986年推出。它最初是…

阿里云不同账号vpc对等连接

目录 一,VPC对等连接介绍 1,VPC功能介绍 2,使用场景 二,准备vpc,和ECS服务器 1,第一个账号vpc网络/网段 ​编辑 2,第一个账号下的ECS实例 ip:172.19.45.29 ​编辑 3, 第二个账号vpc网络/网段 4&…

AI开发模式:ideal或vscode + 插件continue+DeepSeek R1

如何在 VSCode 中结合插件 Continue 和 DeepSeek 构建智能货柜AI开发环境的详细指南,涵盖环境配置、算法开发与模型优化全流程: 1. 环境搭建与工具选型 核心工具 工具/插件用途推荐配置VSCode主开发环境,支持多语言与插件扩展安装Python/C++/CUDA扩展ContinueAI代码助手(类…

游戏引擎学习第87天

当直接使用内存时,可能会发生一些奇怪的事情 在直接操作内存时,一些意外的情况可能会发生。由于内存实际上只是一个大块的空间,开发者可以完全控制它,而不像高级语言那样必须遵守许多规则,因此很容易发生错误。在一个…

接口测试Day11-代码优化、生成测试报告、日志收集、全量字段校验

获取请求头 1、. 在 common/ 下 创建 get_header.py 文件 2. 在 文件内 创建 get_header() 函数,实现 登录成功,获取令牌,拼接成 请求头,返回。 3. 在 scripts/ 的测试脚本文件中,添加 setUpClass 方法,调用…