Centos7.6 Docker私服搭建-harbor

Harbor使用docker-compose单机容器编排方式一键安装部署,包括如下组件

  • Proxy:他是一个nginx的前端代理,代理Harbor的registry,UI, token等服务。
  • db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
  • UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权。
  • jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log。
  • Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
  • Registry:镜像仓库,负责存储镜像文件。
  • Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有如下优势:

  • 提供分层传输机制,优化网络传输

Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。

  • 提供WEB界面,优化用户体验

只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。

  • 支持水平扩展集群

当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。

  • 良好的安全机制

企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。

  • Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制。

kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。

之前两篇介绍了  使用Docker registry两种方式搭建Docker私服

                           使用Nexus3搭建Docker私服

现在开始搭建Harbor私服......

安装docker-compose version 1.24.1, build 4667896b

官网太慢,推荐通过pip 安装

yum -y install epel-release

pip --version

pip install --upgrade pip

pip install docker-compose

https://docs.docker.com/compose/install/

docker官网compose.yml文件属性详解 

地址:https://docs.docker.com/compose/compose-file/

安装

wget  https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.5.tgz

https://github.com/goharbor/harbor/releases/tag/v1.8.2

tar -zxf harbor-offline-installer-v1.7.5.tgz -D /opt

/etc/docker/daemon.json文件增加 192.168.3.34

systemctl  restart docker

修改配置文件

解压缩之后,目录下会生成harbor.cfg文件,该文件就是Harbor的配置文件。

hostname = 192.168.3.34

ui_url_protocol = http

customize_crt = off

坑1:若有其他服务占用80/443端口,想办法调整规避

修改docker-compose.yml文件

  proxy:
    image: goharbor/nginx-photon:v1.7.5
    container_name: nginx
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
      - NET_BIND_SERVICE
    volumes:
      - ./common/config/nginx:/etc/nginx:z
    networks:
      - harbor
    dns_search: .
    ports:
      - 5080:80
      - 5443:443
      - 4443:4443

修改 common/templates/registry/config.yml

auth:
  token:
    issuer: harbor-token-issuer
    realm: $public_url:5080/service/token

坑2:若是要改变/data目录,要全部改掉,这里使用默认路径/data
#  ./prepare(更新配置文件,如果是重装,则先rm -rf /data再执行)

#  ./install.sh

✔ ----Harbor has been installed and started successfully.----

安装完成

查看端口占用

netstat -tunlp

查看日志:

ls /var/log/harbor/

docker-compose ps

docker login 192.168.3.34

username:admin     password:Harbor12345

登录harbor web:

账号:admin 密码为默认:Harbor12345。密码在harbor.cfg文件中可以找到。

登录之后进入下面界面。

测试:

上传镜像到Harbor

坑3:不能像之前docker-registry/nexus3那样打tag,否则push报错

给镜像打标签的时候, 要多一层 library, 这个是缺省的, 否则要建立好了project,才能推镜像

library是缺省项目,web查看结果如下:

参考:https://github.com/goharbor/harbor/blob/release-1.7.0/docs/installation_guide.md

           kubernetes集群搭建harbor仓库,单机搭建harbor以及docker registry仓库搭建,内附踩坑细节

           Docker Hub与Docker Store详解

           Docker,Docker-Compose,Docker Swarm,Kubernetes之间的区别

          为什么有了Docker registry还需要Harbor?

发布了36 篇原创文章 · 获赞 5 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/ccren/article/details/100892977