Harbor私有镜像仓库

Docker私有仓库Harbor

​ 前面学习了Docker及Dockerfile构建镜像,那么构建的镜像放在哪里才能被Docker容器快速获取到呢?我们知道,可以把镜像放入Docker Hub镜像仓库,但是Docker Hub是国外网站,一方面镜像放在Docker Hub不安全,另一方面从Docker Hub下载镜像比较慢,尽管可以配置Docker Hub镜像加速器,但是速度最快只能到10m/s。因此,将镜像放入私有仓库是一种更好的做法。

Harbor概念及证书签发

​ Harbor是一个企业级的容器镜像仓库,它提供了镜像的存储、管理、分发、安全扫描等一系列功能。企业可以轻松管理和创建自己的私有仓库,可以自定义访问控制、镜像复制和同步等策略,使之安全高效。

​ Harbor作为优秀的私有镜像仓库,被很多企业和个人使用,Harbor提供了有好的UI界面,我们访问Harbor UI界面时可以通过HTTP和HTTPS的方式访问,一般为了安全性都是HTTPS访问,如何通过HTTPS访问?在实际应用中,我们可以通过购买CA证书,或通过自签发证书来实现HTTPS方式的访问。

自签发证书是相对简单的一种方式,我们通过OpenSSL生成自签发证书

  • 创建存放证书的目录
mkdir /data/ssl -p
cd /data/ssl
  • 生成CA证书

CA(Certificate Authority)是数字证书的签发机构,我们需要生成一个CA证书来签署服务器证书。

openssl genrsa -out ca.key 3072
openssl req -new -x509 -days 3650 -key ca.key -out ca.pem

这个命令会使用OpenSSL命令工具生成一个长度为3072位的RSA私钥文件ca.key和一个自签名的X.509证书ca.pem,有效期10年。生成过程中,需要按照提示输入证书的相关信息,如国家、省份、城市、单位名等,也可以直接回车默认。

在这里插入图片描述

生成服务器证书

该证书用于对客户端的HTTPS请求进行响应。生成服务器证书:

  • 创建一个服务器证书的私钥文件server.key
openssl genrsa -out server.key 3072
  • 创建一个证书签名请求,(Certificate Signing Request, CSR)文件,server.csr,该文件包含需要在证书中包含的信息:
openssl req -new -key server.key -out server.csr

生成CSR过程中,同样需要填写相关信息。

在这里插入图片描述

  • 最后,使用之前生成的CA证书ca.pem对服务器证书进行签名,生成最终的服务器证书server.crt:
openssl x509 -req -days 3650 -in server.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.crt

​ 这个命令会使用OpenSSL工具生成一个自签名的X.509数字证书server.crt,有效期10年。生成证书过程中,需要输入CA证书的密码,按照提示输入即可。

完成上述步骤,就可以用HTTPS访问Harbor UI界面了。需要注意的是:在使用自签发证书的情况下,浏览器会显示证书不受信任,需要手动添加证书信任才能正常访问。

安装Harbor

准备harbor

  • 创建安装目录
mkdir /data/install -p
cd /data/install
  • Harbor离线包harbor-offline-installer-v2.3.0-rc3.tgz上传到/data/ssl目录

  • 解压Harbor离线包

tar -zxvf harbor-offline-installer-v2.3.0-rc3.tgz
  • 修改Harbor配置文件
cd harbor # 到harbor目录下
cp harbor.yml.tmpl harbor.yml # 拷贝一份文件更名为harbor.yml
vim harbor.yml 	# 修改配置
hostname: harbor # 用于访问用户界面和harbor服务。它应该是目标机器的IP地址或域名不要使用localhost或127.0.0.1为主机名,这里和上面签发的服务器证书中的域名一致就行
certificate: /data/ssl/ca.pem	# harbor的根证书,只有开启HTTPS才用到
private_key: /data/ssl/ca.key	# harbor的私钥,开启HTTPS才用到

Harbor默认的账号和密码:admin/Harbor12345

安装Docker compose

Docker-compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。安装Harbor是通过Docker-compose命令实现的,可以通过以下方法安装Docker-compose

docker-compose-Linux-x86_64.64离线文件上传到/data/install目录下,把文件复制到/usr/bin目录下,重命名为docker-compose

mv docker-compose-Linux-x86_64.64 /usr/bin/docker-compose
  • 赋予docker-compose执行权限
chmod +x /usr/bin/docker-compose

docker-compose工程配置文件默认为docker-compose.yml文件,docker-compose运行目录下必须有docker-compose.yml文件。docker-compose可以管理多个docker的实例

安装Harbor

  • 执行安装脚本
cd /data/install/harbor
./install.sh

会去拉取下载很多镜像,时间可能比较长,耐心等待…

在这里插入图片描述

这样就成功了。客户端若想通过域名访问自己的harbor可以在电脑的hosts文件中设置

xxx.xxx.xxx.xxx harbor
  • 若要停止并删除由docker-compose命令启动的harbor服务
cd /data/install/harbor # 因为这个目录下有docker-compose.yml文件,所以在这个目录下面运行
docker-compose down

命令会:

  • 停止容器
  • 删除所有已经停止的容器
  • 删除所有与服务相关的网络(除非是external指令定义的外部网络)
  • 删除所有与服务关联的匿名和命名卷

需要注意的是:docker-compose down不会删除镜像或构建的缓存

  • 启动harbor
cd /data/install/harbor
docker-compose up -d

Harbor界面使用

直接访问harbor私有库的ip地址即可,选择信任继续访问,输入账号密码

在这里插入图片描述

页面如下:

在这里插入图片描述

其中有一个library的镜像仓库,所有的基础镜像都在这个仓库里面,这是一个公开的镜像仓库。

我们创建一个自己的镜像仓库来使用,也选择公开,公开后其他人命令行访问这个仓库时是不需要进行身份认证的,请留意

在这里插入图片描述

测试使用harbor私有库

要使用Harbor私有镜像仓库,需要docker login登录Harbor,默认是基于HTTPS的,若使用HTTPS,那么还需要配置客户端的证书,若不使用HTTPS而是使用HTTP,可以增加insecure-registries字段,若Docker客户端添加了insecure-registries配置,就不需要在Docker客户端配置对应的证书。

修改Docker配置

  • vim编辑daemon.json文件
vim /etc/docker/daemon.json
  • daemon.json默认是不存在的,需要自己创建,写入内容如下
{"insecure-registries": ["192.168.40.181","harbor"]
}

192.168.40.181:是Harbor机器的ip

harbor是192.168.40.181对应的主机名

  • 设置hosts
vim /etc/hosts
# 内容如下
192.168.40.181  harbor
  • 重启服务使生效
systemctl daemon-reload && systemctl restart docker

登录Harbor

docker login xxx.xxx.xxx.xx

输入账号密码,默认admin/Harbor12345,出现Login Succeeded,说明登录成功。

测试上传镜像到Harbor私有仓库

  • 先去Docker Hub下载Tomcat镜像作为测试镜像。
docker pull tomcat
  • 给镜像打标签
docker tag tomcat:latest ip地址或域名/test/tomcat:v1

相当于给镜像起名字,tomcat:latest表明给这个镜像打标签。

ip地址或域名表示指定仓库地址(不写默认是Docker Hub的地址)

/test/tomcat:是这个镜像在harbor中的命名空间和仓库名,v1是版本号。

  • push推送到仓库
docker push xxx.xxx.xx.xxx/test/tomcat:v1

推送完毕后如图。

在这里插入图片描述

  • 从私有库拉取镜像
docker pull xxx.xxx.xxx.xxx/test/tomcat:v1

在这里插入图片描述

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

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

相关文章

Python 读写T5557低频RFID,将T5557卡制做成ID、HID卡

本示例使用的发卡器: T5557 T5567 T5577低频RFID读写器 EM4100 HID卡复制器 酒店门卡-淘宝网 (taobao.com) from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget,QMessageBox,QCheckBox,QLineEdit from…

【LeetCode】回溯算法类题目详解

所有题目均来自于LeetCode,刷题代码使用的Python3版本 回溯算法 回溯算法是一种搜索的方法,在二叉树总结当中,经常使用到递归去解决相关的问题,在二叉树的所有路径问题中,我们就使用到了回溯算法来找到所有的路径。 …

策略为王股票软件源代码\StkUI\View\BaseView.cpp-------显示股票基本资料的视图-------程序代码都在里面了

CString strHeader info.GetStockCode(); strHeader " "; /修改 strHeader info.GetStockName(); strHeader "\r\n\r\n "; GetEditCtrl().SetWindowText( strHeader ); GetEditCtrl().SetSel…

5.9 mybatis之callSettersOnNulls作用

文章目录 1. 当callSettersOnNullstrue时2. 当callSettersOnNullsfalse时 在mybatis的settings配置参数中有个callSettersOnNulls参数,官方解释为:指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法…

REINFORCE及进阶算法讲解笔记

REINFORCE 总结 估计VALUE-methods没有在理论上证明收敛,而policy-methods不需要估计value function。 本算法总结了过去的算法,将过去算法作为特例看待,证明了即使是结合函数估计和实际采样的value梯度都可以无偏估计,证明了某种…

访问者模式类图与代码

某图书管理系统中管理着两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。采用Visitor(访问者)模式实现该要求,得到如图7.16所示的类图。 访…

Java_04

Servlet: Servlet即serverapplet,指运行在服务器端的小程序,是sun公司提供的一门用于开发动态web资源的技术,通常我们也把实现了servlet接口的java程序也称为Servlet; package com.example.demo;import jakarta.servlet.*;impor…

利用Sentinel解决雪崩问题(一)流量控制

1、解决雪崩问题的常见方式有四种: 超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待;舱壁模式:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离;熔断降级:由断路器统计业务…

数据——关键生产要素

数据作为数字经济时代的关键生产要素,逐步融入生产生活各方面,深刻影响并重构着经济社会运行和社会治理,已成为影响未来发展的关键战略性资源。近年来,我国高度重视发展数字经济、数据要素及其市场化配置改革,发布了一…

风电机组中仍然装有电动机吗?

风电机组中确实装有电动机。虽然风电机组的主要功能是将风能转换为电能,但在其启动和运行过程中,电动机发挥着不可或缺的作用。 在风电机组的启动阶段,电动机负责提供初始的启动动力。由于风力发电的特性,风电机组并不能在任意风…

快速安装/升级/卸载Ascend配套软件包

一、参考资料 配套MindSpore 昇腾软件安装指引(23.0.RC3) 快速安装CANN 二、安装Ascend配套软件包 1. Ascend配套软件包简介 Ascend配套软件包,包括:固件、驱动和CANN(Compute Architecture for Neural Networks&…

【设计模式】六大设计原则

设计原则 研究 23 种设计模式是困难的,甚至是没必要的六大设计原则零、单一职责原则开闭原则里氏代换原则依赖倒置原则接口隔离原则迪米特法则合成复用原则 研究 23 种设计模式是困难的,甚至是没必要的 设计模式有23种,我认为对普通人来说想…