harbor镜像仓库介绍、安装、使用全过程详解和问题记录分析

-------------------------------------安装前介绍-----------------------------------------------------
	harbor是一个docker私有镜像仓库,虽然docker官方提供了公共的镜像仓库(Docker Hub),但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目。
docker官方提供了一个私有镜像仓库 docker Registry,安装部署容易,安装一个Registry容器就可以使用了。
但是Registry有以下缺点:
1、没有图形界面
2、 没有项目管理
3、没有用户权限控制
4、 看不到镜像操作记录
Harbor的优势:
1、图形管理界面。
2、按项目管理镜像。
3、独立的用户管理,不同用户可以操作不同镜像,细粒度的权限控制,包含create、push 、pull、delete。
4、镜像管理。
5、标签管理。
6、操作日志管理。

-------------------------------------安装前准备-----------------------------------------------------
步骤一:安装docker 
  一、安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
    yum install -y yum-utils device-mapper-persistent-data lvm2
  二、设置yum源
    yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)
  三、查看仓库中所有的docker版本
    yum list docker-ce --showduplicates | sort -r
  四、安装docker,yum install docker-ce-版本号
    yum install docker-ce-18.06.2.ce
  五、启动docker和设置开机自动启动
    systemctl enable docker
    systemctl start docker

步骤二:安装docker-compose
 <方式一>CentOS:
	yum install epel-release -y
	yum install python-pip -y

	Ubuntu:
	apt-get install python-pip -y

	# 通用命令
	pip --version
	pip install --upgrade pip
	pip install -U -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose 
	docker-compose version
  <方式二>
   1、安装pip
    yum -y install epel-release
    yum -y install python-pip       
   2、查看和更新 
    pip --version
    pip install --upgrade pip
   3、安装和查看版本
    pip install docker-compose
    docker-compose version 
  <方式三>
    1、yum update curl  
    2、下载和安装
      sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
      chmod +x /usr/local/bin/docker-compose
    3、查看版本
      docker-compose version
步骤三:下载harbor在线或离线安装包
	1、harbor的仓库页面进行下载版本
	   https://github.com/goharbor/harbor/releases
	   harbor-online-installer-v1.8.0.tgz
	2、下载后上传到服务器
	   cd /home/
	   tar -zvxf harbor-online-installer-v1.8.0.tgz
	   解压后会自动生成harbor文件

-------------------------------------安装开始------------------------------------------------------
步骤一:创建https证书
       步骤说明:此处一定注意,证书创建错误后面产生各种问题,解决方法也很乱。
       1、创建证书目录
          mkdir -p /home/cert/httpsHarbor
          cd /home/cert/httpsHarbor
       2、生成证书
           <1>openssl genrsa -out ca.key 2048 
           <2>openssl req -x509 -new -nodes -key ca.key -subj "/CN=harbor.nj.com" -days 5000 -out ca.crt
           此处注意:harbor.nj.com为域名地址,没有则设置成主机别名也可以(需配置别名),或直接ip地址
           <3>openssl genrsa -out server.key 2048
           <4>openssl req -new -key server.key -subj "/CN=harbor.nj.com" -out server.csr
           <5>openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 5000
       3、安装完成后可查看目录结构

harbor镜像仓库介绍、安装、使用全过程详解和问题记录分析_第1张图片

补充步骤一:
    1、创建别名(没有可忽略)
       vim /etc/hosts中添加   192.168.42.13   harbor.nj.com
       解释:ip为主机ip,域名为解析的域名,对应CA证书域名或别名
    2、进入文件并编辑
       cd /etc/pki/tls/ 
       vim openssl.cnf
       说明:在大概244行左右,即[ v3_ca ]下面一行 subjectAltName = IP:192.168.42.13   其中ip为当前主机。
步骤二:编辑启动信息
    1、vim harbor.yml并编辑

    # 将hostname改成本机IP或域名,不要用localhost,127.0.0.1或0.0.0.0,冒号后面都有一个空格
	hostname: 192.168.42.13
    ui_url_protocol: https
	# 将http端口改成8081,因为默认用的80端口已经被占用,http可以指定任意端口
	http:
	  port: 8081
	# 配置https的端口,只能使用443端口,更改证书路径,证书路径为刚刚生成的https证书的实际路径
	https:
	  port: 443
	  certificate: /home/cert/httpsHarbor/ca.crt
	  private_key: /home/cert/httpsHarbor/ca.key
	# 修改后台管理密码
	harbor_admin_password: harbor12345
	# harbor的内部数据库密码
	database:
	  password: root123
	# 修改harbor数据存储路径与日志存储路径,目录要先创建好并赋予777权限
	data_volume: /data/harbor-data
	# 修改日志存放路径,默认路径为/var/log/harbor
	log:
	  local:
	    localtion: /data/harbor-log
    
    最后保存退出
步骤三:启动
    # 进入harbor安装目录
      cd /home/harbor 
    # 启动
      ./install.sh
    
步骤四:浏览器使用
   直接访问域名加上自己配置的端口方法
   用户名为admin,密码为配置文件中定义的

至此安装成功

-------------------------------------docker信任配置---------------------------------------------------
步骤一:配置仓库为docker受信任的仓库
    # 编辑
       vim  /etc/docker/daemon.json
    # 追加内容
    {
        "insecure-registries": ["192.168.42.13:8081"]
    }
    具体根据情况,如下我的配置:

harbor镜像仓库介绍、安装、使用全过程详解和问题记录分析_第2张图片

步骤二:拷贝https证书文件harbor.crt到 /etc/docker/certs.d/serverIp 文件夹。每个docker都要拷贝证书文(此步骤可以先忽略,后面镜像推送出问题在执行此步骤)
    mkdir –p /etc/docker/certs.d/192.168.42.13
    cp /home/cert/httpsHarbor/ca.crt  /etc/docker/certs.d/192.168.42.13/ca.crt
步骤三:重启docker(注意不重启后面docker login会访问不了harbor)
    systemctl daemon-reload
    systemctl restart docker.service
步骤四:重启harbor
    cd /home/harbor
    ./prepare
    docker-compose down
    docker-compose up -d
---------------------------------测试将本地业务镜像push到harbor(后面再介绍SpringBoot对接harbor)---------------------------------------
步骤一:登录harbor
    docker login xxx.xx.xx.xx
    输入账户密码
    登陆成功后,token会存放在 ~/.docker/config.json.文件里
步骤二:给本地镜像打上tag标记,打标记的时候要加上项目名称。
    # docker tag 本地镜像名:版本号 ip:port/项目名称/远程镜像名:版本号,如果不加版本号表示最新版本
    docker tag demo1:v1.0.1 xx.xx.xx.xx:8081/test/demo1:v1.0.1
    # 上传镜像到harbor
    docker push xx.xx.xx.xx:8081/test/demo1:v1.0.1

-------------------------------------harbor仓库的常用操作记录-----------------------------------------
1、从harbor上拉取镜像
  docker pull xx.xx.xx.xx:8081/test/demo1:v1.0.1
2、重启harbor
    cd /home/harbor
    docker-compose down
    ./prepare   #配置文件有改动时需要执行
    docker-compose up -d
3、关闭harbor
    cd /usr/local/harbor
    docker-compose down -v
    # 或者
    docker-compose stop
4、卸载harbor
   cd /home/harbor
   docker-compose stop
   rm -rf /home/harbor
 5、最常用操作
    停止服务: docker-compose stop
	开始服务: docker-compose start
	再次启动harbor: docker-compose up -d
	停止和关闭harbor命令:docker-compose down -v
              docker-compose ps
-------------------------------------高可用配置介绍和安装--------------------------------------------------------



-------------------------------------遇到问题汇总记录--------------------------------------------------------------
1、如果不在harbor中新建项目,或者创建tag的时候不加项目名称,在上传镜像时会发生错误,所以docker tag 打标签的时候要一定要加上项目名称。
   
2、#"注意docker-compose"命令只能在当前harbor目录下使用(因为该目录下有harbor配置文件)

3、配置生效的方式。编辑保存配置后。在harbor安装目录下执行./prepare即可
 
4、push镜像时候报错解决
   Get https://106.15.94.115/v2/: x509: cannot validate certificate for xx.xx.xx.xx because it doesn't contain any IP SANs
   说明:此错误目前看是证书导致的错误,创建证书时候没有引入ip或域名或别名导致的错误,具体根据自己当时情况重新创建证书,配置相关参数即可,具体可参考上文的安装证书步骤和配置harbor.yml文件
5、push过程中被deny拒绝。
   说明:本地docker login  xxx.xx.xx.xx后再重新push,特别是重启harbor后在本地测试这部必须的,当然你可以再springBoot中配置一键打包镜像后push,其实道理一样。docker login就是把登录成功后的token保存在本地,这样就不会被deny了

-----------------------------------最后附上成功推送后的截图--------------------------------------------------------------
harbor镜像仓库介绍、安装、使用全过程详解和问题记录分析_第3张图片
harbor镜像仓库介绍、安装、使用全过程详解和问题记录分析_第4张图片

你可能感兴趣的:(linux,镜像仓库)