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年。生成过程中,需要按照提示输入证书的相关信息,如国家、省份、城市、单位名等,也可以直接回车默认。

Harbor私有镜像仓库

生成服务器证书

该证书用于对客户端的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过程中,同样需要填写相关信息。

Harbor私有镜像仓库

  • 最后,使用之前生成的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私有镜像仓库

这样就成功了。客户端若想通过域名访问自己的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地址即可,选择信任继续访问,输入账号密码

Harbor私有镜像仓库

页面如下:

Harbor私有镜像仓库

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

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

Harbor私有镜像仓库

测试使用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

推送完毕后如图。

Harbor私有镜像仓库

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

Harbor私有镜像仓库


原文始发于微信公众号(小路同学ovo):Harbor私有镜像仓库

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/275374.html

(0)
青莲明月的头像青莲明月

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!