搭建Docker私仓

2024-03-07 16:40
文章标签 docker 搭建 私仓

本文主要是介绍搭建Docker私仓,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

搭建Docker私仓

(创作不易,如有转载请附上链接)

私有仓库Harbor搭建

私有仓库搭建的必要性

1、虽然Docker官方提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。
2、很多情况需要在一个完全内网环境启用的容器化技术,这种情况就需要在公司内部的网络中搭建一个公共的docker管理私有仓库,用来管理项目中所有的镜像资源,这样管理的镜像资源才是安全的。

Harbor使命

我们的使命是成为 Kubernetes 值得信赖的云原生存储库
Harbor的主要功能
• 基于角色的访问控制
• 基于镜像的复制策略
• 图形化用户界面
• 支持 AD/LDAP
• 镜像删除和垃圾回收
• 审计管理
• RESTful API

下载与安装
官方提供的演示服务器

Harbor团队提供了一个演示Harbor实例,您可以使用它来试验 Harbor 并测试其功能。

  1. 转到 https://demo.goharbor.io。

  2. 单击注册帐户。

  3. 通过提供用户名、电子邮件地址、姓名和密码来创建用户帐户。

  4. 使用您创建的帐户登录 Harbor 界面。

  5. 默认有几个项目
    在这里插入图片描述

  6. 单击“ 新建项目”以创建您自己的项目。
    新建一个ceshi-repo项目
    在这里插入图片描述
    可以设置访问级别,点击确定后,项目就算创建完成在这里插入图片描述

  7. 打开安装了docker的客户端,通过docker login 测试服务器(域名/IP:端口)。
    在这里插入图片描述
    在这里插入图片描述

  8. 创建一个Dockerfile构建一个镜像并且设置号标签
    在这里插入图片描述
    docker build –t 镜像名称 .
    通过上面名称格式构建一个本地镜像,注意”.”这个构建方式,需要当前目录存在Dockerfile文件
    docker build -t demo.goharbor.io/项目名/test-image .
    我的具体命令如下:
    docker build -t demo.goharbor.io/ceshi-repo/test-image .
    通过docker images查看
    在这里插入图片描述
    说明当前本地镜像仓库已经存在刚才构建好的镜像资源了

  9. 将刚才构建好的镜像资源push到远程仓库服务器(前提是已经7步骤登录成功)
    docker push 镜像名称
    在这里插入图片描述

如上图结果说明push成功,我们可以再回到Harbor页面查看,可以看到刚上传的镜像资源信息
在这里插入图片描述

下载与安装自己的Harbor服务器
分类

安装分为两大类:在线安装程序和离线安装程序
在线安装程序:在线安装的程序从Docker hub下载harbor镜像。资源包比较小,前提这种安装方式能够链接外网。
离线安装程序:如果部署的机器没有链接外网的条件,必须使用该种安装方式,下载的安装包包含了所有需要的资源,资源包比较大。
但是不管离线还是在线安装。它们的安装过程几乎相同的

下载资源

下载地址:https://github.com/goharbor/harbor/releases
在这里插入图片描述
我使用的是离线的版本

安装

1、 解压下载好的安装包
在这里插入图片描述

2、服务访问安全性保障(可选)
默认情况下,Harbor 不附带证书。可以在没有安全性的情况下部署 Harbor,以便您可以通过 HTTP 连接到它。但是,仅在没有连接到外部 Internet 的气隙测试或开发环境中才可接受使用 HTTP。在非气隙环境中使用 HTTP 会使您面临中间人攻击。在生产环境中,始终使用 HTTPS。如果您启用 Content Trust with Notary 以正确签署所有图像,则必须使用 HTTPS。
要配置 HTTPS,您必须创建 SSL 证书。您可以使用受信任的第三方 CA 签署的证书,也可以使用自签名证书。本节介绍如何使用 OpenSSL创建 CA,以及如何使用您的 CA 签署服务器证书和客户端证书。您可以使用其他 CA 提供商,例如 Let’s Encrypt。
以下过程假设您的 Harbor 注册表的主机名是test.com,并且其 DNS 记录指向您运行 Harbor 的主机。
2.1、如何生成证书颁发机构证书
在生产环境中,您应该从 CA 获取证书。在测试或开发环境中,您可以生成自己的 CA。要生成 CA 证书,请运行以下命令。

2.1.1、生成CA证书私钥
openssl genrsa -out ca.key 4096
在这里插入图片描述
2.1.2、生成CA证书
调整-subj选项中的值以反映您的组织。如果使用 FQDN 连接 Harbor 主机,则必须将其指定为公用名 ( CN) 属性
openssl req -x509 -new -nodes -sha512 -days 3650
-subj “/C=CN/ST=Hangzhou/L=Hangzhou /O=example/OU=Personal/CN=test.com”
-key ca.key
-out ca.crt
在这里插入图片描述

2.2、生成harbor服务器证书
2.2.1、生成私钥
openssl genrsa -out test.com.key 4096

注意红色部分为设置的主机名
2.2.2、生成证书签名请求 (CSR)
openssl req -sha512 -new -subj “/C=CN/ST=Hangzhou/L=Hangzhou/O=example/OU=Personal/CN=test.com”
-key test.com.key
-out test.com.csr
在这里插入图片描述
2.2.3、生成 x509 v3 扩展文件
无论您是使用 FQDN 还是 IP 地址连接到您的 Harbor 主机,您都必须创建此文件,以便为您的 Harbor 主机生成符合主题备用名称 (SAN) 和 x509 v3 的证书扩展要求。替换DNS条目以反映您的域。
在这里插入图片描述
2.2.4、使用该v3.ext文件为您的 Harbor 主机生成证书
在这里插入图片描述
2.3、将生成的harbor服务器证书提供给Harbor与docker(和2.2一样可选2.2选择了,该步骤也要执行)
生成后ca.crt,test.com.crt和test.com.key文件,必须将它们提供给docker和Harbor,和重新配置Harbor。
2.3.1、 将服务器证书和密钥复制到 Harbor 主机上的 certficates 文件夹中。

cp test.com.crt /data/cert/
cp test.com.key /data/cert/

如果/data/目录下没有cert文件夹则创建一个cert文件夹
2.3.2、 转换test.com.crt为test.com.cert,供 Docker 使用。Docker 守护进程将.crt文件解释为 CA 证书,将.cert文件解释为客户端证书。
openssl x509 -inform PEM -in test.com.crt -out test.com.cert在这里插入图片描述
2.3.3、 将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。有的文件夹不存在需要手动去先创建

cp test.com.cert /etc/docker/certs.d/test.com/
cp test.com.key /etc/docker/certs.d/test.com/
cp ca.crt /etc/docker/certs.d/test.com/

在这里插入图片描述
2.4、 重启 Docker 引擎

systemctl restart docker

2.5、 证书配置最终目录(HTTPS方式配置后)

/etc/docker/certs.d/└── test.com:port├── test.com.cert <-- Server certificate signed by CA├── test.com.key  <-- Server key signed by CA└── ca.crt         <-- Certificate authority that signed the registry certificate

3、配置HTTPS访问Harbor
3.1、 运行prepare脚本以启用 HTTPS(HTTPS方式)
在上述步骤的安装包下面有一个prepare脚本, Harbor 使用一个nginx实例作为所有服务的反向代理。您可以使用prepare脚本进行配置nginx以使用 HTTPS。该prepare在港的安装包,在同级别的install.sh脚本。在这里插入图片描述
第一次运行发现报错,后面排查到需要将之前生成的证书路径配置进来
将之前生成好的私钥完整路径和证书的完整路径配置好
在这里插入图片描述

在这里插入图片描述
4、配置Harbor yml文件
场景一:将hostname改成test.com(https访问方式,域名方式)
场景二:将hostname改成主机IP(http方式),注意要将https的部分注释掉(如何提供出去http方式是不安全的,不建议使用)

运行安装程序脚本

直接运行安装程序时,报错如下
在这里插入图片描述
提示先要安装docker-compose
安装docker-compose(这块需要离线安装,去官网下载对应的安装包,查阅对应的离线安装方法,我这里就不单独去演示了,我的可以直接链接外网)
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose
配置权限
chmod +x /usr/local/bin/docker-compose
查看是否安装成功没
在这里插入图片描述
再次运行
在这里插入图片描述
自此安装成功了,可以通过https://test.com/可以直接访问
因为我的是在腾讯云上面部署的,需要去配置下(哈哈:TMD 这个test.com的域名已经被申请了,还不能在腾讯云上配置,算了我放弃了,大家记住如果是公有云需要配置域名信息的,要去申请域名的),不然只能通过http://服务地址:443访问,好吧我就通过这个方式的
配置好后可以访问如下:
默认用户名:admin 密码:Hardor12345
在这里插入图片描述
登录进去后和官方演示的一摸一样
在这里插入图片描述

因为不是通过域名访问,没有进行认证所以拒绝访问了

管理harbor服务的启动与暂停

关闭:
docker-compose down -v
开启:
docker-compose up -d

这篇关于搭建Docker私仓的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/784172

相关文章

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

关于Docker Desktop的WSL报错问题解决办法

《关于DockerDesktop的WSL报错问题解决办法》:本文主要介绍关于DockerDesktop的WSL报错问题解决办法的相关资料,排查发现是因清理%temp%文件夹误删关键WSL文件,... 目录发现问题排查过程:解决方法其实很简单:重装之后再看就能够查到了:最后分享几个排查这类问题的小www.cp

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --