Harbor私有镜像仓库

本文介绍了如何使用DockerHarbor作为私有镜像仓库,包括Harbor的概念、证书签发、自签发证书的生成、HTTPS访问设置、以及通过docker-compose安装和配置Harbor的过程。还详细讲述了如何测试使用Harbor私有库,包括镜像上传、拉取和安全配置等。
摘要由CSDN通过智能技术生成

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

在这里插入图片描述

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值