基于Harbor搭建Docker私有镜像仓库

准备工作

  • 安装docker
    Linux下安装Docker及基础操作
  • 安装docker-compose
    官网教程
    • 下载
      sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      
      在这里插入图片描述
    • 更改权限
      sudo chmod +x /usr/local/bin/docker-compose
      

Harbor安装

资源下载
  • 下载
    Harbor Github上的下载页面,这里下载了目前最新的1.8.0的版本;将其拷贝至linux服务器的/usr/local/src/目录下并解压;
Https证书配置
  • 前言
    由于Docker上传默认使用的Https,为了不影响客户端的使用,这里使用自签泛域名证书的方式进行测试;这一步也可以不做配置,那么就只支持http的上传,客户端就需要指定授权,具体的方式下面会介绍;如果不想配置https证书或者不想配,可以直接跳过本节直接看下一节;
  • 域名说明
    为了便于访问,这里使用了hub.lpf.com作为了测试域名;声明lpf.com非本人域名,这里仅仅使用hub.lpf.com映射到内网下的一个做测试用,不做任何其他用处。个人测试的话,也可以使用其他的任意域名,该域名仅仅作为解析到内网ip使用,不会做公网映射;
    如果需要做私服的外网访问,这里也可以使用真实的域名,相关的域名证书可以上阿里云、腾讯云等平台申请付费或者免费的证书;关于免费证书申请,可参考该博客:免费SSL证书实现https请求
  • 添加hosts记录
    本地内网下使用:192.168.1.21的一台机器作为镜像服务器,在192.168.1.21的hosts文件下加一条域名映射关系,用于将hub.lpf.com映射到192.168.1.21的机器上;如果域名是真实的且与本机做了映射,就不用做此配置;
    vi /etc/hosts
    
    添加以下配置
    192.168.1.21 hub.lpf.com
    
    使用:ping hub.lpf.com 测试是否已经生效
  • 自签证书生成
    • 下载正式生成工具
      下载自签泛域名证书的工具,放到linux服务器上,也可以在linux服务器上安装git,使用git clone指令进行下载;如果是压缩包,请自行解压好。

    • 生成正式
      进入以上工具的解压目录,使用以下指令
      cd /usr/local/src/ssl-master

      ./gen.cert.sh hub.lpf.com
      


      可以看出,out目录下为生成的证书信息;为了方便我们后续的配置,我们将证书拷贝到另外一个目录:

      mkdir -p /home/data/keys/harbor/
      cp /usr/local/src/ssl-master/out/hub.lpf.com/hub.lpf.com.key.pem /home/data/keys/harbor/cert.key.pem
      cp /usr/local/src/ssl-master/out/hub.lpf.com/hub.lpf.com.crt /home/data/keys/harbor/hub.lpf.com.crt
      

    • root.crt说明
      》注意,警告《 该证书文件需要放到各个客户端,才能正常的通过https访问,这里做说明,后面会详细的讲解怎么使用

Harbor的配置文件修改
  • 进入harbor的解压目录,找到以下文件

    vim harbor.yml
  • 添加修改以下配置:
    	#主机地址,前面配置的域名
    	hostname: hub.lpf.com
    	
    	# http 相关的配置
    	http:
    	  # 由于80端口被其他的服务给占用了,这里使用8099代替
    	  port: 8099
    	
    	# https 相关配置
    	# 默认情况下,https的配置都没有开启,由于我们已经生成了自签的正式,这里就做https的ssl证书配置
    	# 如果不需要https证书,可以将以下配置注释掉
    	https:
    	  # https 的端口,443地址
    	  port: 443
    	  # 签名生成的证书的相关路径
    	  # 以下的路径请根据个人的具体情况配置
    	  certificate: /home/data/keys/harbor/hub.lpf.com.crt
    	  private_key: /home/data/keys/harbor/cert.key.pem
    
    目前我们只修改以上的配置,如果需要更多的配置,可以根据描述进行修改调整;
安装Harbor
  • 进入harbor的解压目录,找到并执行以下shell脚本

    出现以下日志,说明harbor安装成功
Harbor管理平台
  • 进入管理平台
    https://hub.lpf.com
    • 注意
      由于hub.lpf.com只是做内网下的映射,这里如果使用window访问管理平台,也需要在window的hosts文件下添加一条映射记录,window的hosts的路径为:C:\Windows\System32\drivers\etc下

    • 说明
      由于使用的是自签的证书,同时又使用了hosts进行了重定向,这里使用浏览器访问的时候,会出现安全提示,但是不会影响https的正常使用,这里将就一下;如果使用正规渠道下发的证书,就不会出现安全提示。
    • 使用默认账户密码登录
      用户名:admin
      密 码:Harbor12345
      以上用户名密码可以在harbor.yml配置中修改
    • 新建项目

Docker上传本地镜像仓库(HTTPS)

  • 准备工作
    准备另外一台服务器,作为docker的客户端,这里使用:192.168.1.208;安装好Docker,具体安装步骤上面有介绍;

  • 下载一个mysql:5.6.36版本的镜像作为测试;

    docker pull centos:7
    

  • 配置hosts文件
    同上所述,在host加上docker服务端的ip映射;如果是真实的域名且映射了对应机器,可不做配置。

  • 添加HTTPS证书
    创建目录

    mkdir -p /etc/docker/certs.d/hub.lpf.com
    

    以上hub.lpf.com为域名,可以根据个人的配置自行调整
    将上面生成的证书root.crt拷贝只该目录

  • 镜像打标签
    给镜像打上本地服务的标签

    docker tag centos:7 hub.lpf.com/test/centos:7
    

  • 登录本地镜像仓库

    docker login hub.lpf.com
    

    输入Harbor管理平台的用户密码,这里使用的admin的账户

  • 推送本地镜像

    docker push hub.lpf.com/test/centos:7
    



    管理中心已经可以正常看见对应的镜像文件

Docker本地镜像下载(HTTPS)

  • 前言
    这里使用另外一台服务器(192.168.1.22)作为Docker客户端进行下载测试;

  • Hosts配置
    同上所述

  • 添加root.crt证书
    同上面的上传服务器的添加方式宜阳

  • 登录

  • 下载镜像

    docker pull hub.lpf.com/test/centos:7
    docker images|grep centos
    

Docker上传本地镜像仓库(HTTP)

  • harbor配置
    如果没有https证书或者不想弄https,使用http的也是可以做到上传下载;由于上面安装harbor的时候已经开放了8099端口作为http的服务,这里就使用8099端口作为演示;

  • 打本地镜像标签

    docker tag centos:7 hub.lpf.com:8099/test/centos:7
    

  • 上传

    docker push hub.lpf.com:8099/test/centos:7
    
    • 问题
      由于docker上传默认使用的是https,因此直接推送回报以下错误
    • 解决方式
      在/etc/docker/daemon.json的配置文件下添加授权
      {
        "insecure-registries":["hub.lpf.com:8099"]
      }
      
    • 重启docker服务
      systemctl restart docker
      
    • 测试
      再次推送即可将镜像推送上去

Docker本地镜像下载(HTTP)

  • 问题描述
    客户端使用http下载的时候,面临的问题和上传是一样的,因此,我们需要/etc/docker/daemon.json的配置文件下添加相同的配置,并重启!
  • 配置后测试

到此,基于Harbor的本地镜像仓库已经搭建完成,同时实现了http及https的镜像上传和下载!

发布了85 篇原创文章 · 获赞 124 · 访问量 35万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览