linux运维架构之路-企业级镜像仓库Harbor
Posted Demon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux运维架构之路-企业级镜像仓库Harbor相关的知识,希望对你有一定的参考价值。
一、Harbor介绍
Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
Harbor主要组件包括proxy,它是一个nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载流量,Ui提供了一个Web管理界面,当然还包括了一个前端页面和后端API,底层使用mysql数据库;Registry是镜像仓库,负责存储镜像文件,当镜像上传完毕后通过ui创建Registry。 当然registry的token认证也是通过ui组件完成;adminserver是系统的配置管理中心附带检查存储用量,ui和Jobserver启动时候会需要加载adminserver的配置;jobservice是负载镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry并记录job_log,log是日志汇总组件,通过docker的log-driver把日志汇总到一起。
Harbor 的每个组件都是以 Docker 容器的形式构建的,我们使用 Docker Compose 来对它进行部署。
- proxy:由 Nginx 服务器构成的反向代理。
- registry:由 Docker 官方的开源 registry 镜像构成的容器实例。
- ui:即架构中的 core services, 构成此容器的代码是 Harbor 项目的主体。
- mysql:由官方 MySql 镜像构成的数据库容器。
- log: 运行着 rsyslogd 的容器,通过 log-driver 的形式收集其他容器的日志。
二、Harbor原理图
三、Harbor部署
1、服务器规划
系统 |
IP地址 |
主机名 |
CPU |
内存 |
CentOS 7.5 |
192.168.56.100 |
docker |
2C |
2G |
CentOS 7.5 |
192.168.56.101 |
harbor |
2C |
2G |
2、docker主机部署docker服务
①下载软件
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
②安装软件
yum install docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm -y yum install docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm -y
③启动Docker服务
systemctl enable docker
systemctl start docker
3、Harbor部署
①安装Docker-compose
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
常用命令:
docker-compose up -d #后台启动,如果容器不存在根据镜像自动创建 docker-compose down -v #停止容器并删除容器 docker-compose start #启动容器,容器不存在就无法启动,不会自动创建镜像 docker-compose stop #停止容器
②安装Harbor
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.0.tgz tar xf harbor-online-installer-v1.5.0.tgz -C /app
③修改配置
[root@harbor ~]# cd /app/harbor/ [root@harbor harbor]# ll 总用量 854960 drwxr-xr-x 4 root root 37 1月 4 17:06 common -rw-r--r-- 1 root root 1185 5月 2 2018 docker-compose.clair.yml -rw-r--r-- 1 root root 1725 5月 2 2018 docker-compose.notary.yml -rw-r--r-- 1 root root 3596 5月 2 2018 docker-compose.yml drwxr-xr-x 3 root root 156 5月 2 2018 ha -rw-r--r-- 1 root root 6685 1月 4 17:02 harbor.cfg -rw-r--r-- 1 root root 875401338 5月 2 2018 harbor.v1.5.0.tar.gz -rwxr-xr-x 1 root root 5773 5月 2 2018 install.sh -rw-r--r-- 1 root root 10771 5月 2 2018 LICENSE -rw-r--r-- 1 root root 482 5月 2 2018 NOTICE -rwxr-xr-x 1 root root 27379 5月 2 2018 prepare
修改harbor.cfg文件:
hostname = 192.168.56.101
安装
/app/harbor/install.sh
④Web页面访问
默认端口为80,需要修改端口请修改docker-compose.yaml对应服务的映射
还需修改common/templates/registry/config.yml文件加入要修改的端口
auth: token: issuer: registry-token-issuer realm: $ui_url:8080/service/token rootcertbundle: /etc/registry/root.crt service: token-service
默认用户:admin 密码:Harbor12345
⑤新建项目
⑥修改Harbor日志路径
docker-compose.yml
services: log: image: goharbor/harbor-log:v1.7.0 container_name: harbor-log restart: always dns_search: . cap_drop: - ALL cap_add: - CHOWN - DAC_OVERRIDE - SETGID - SETUID volumes: - /data/harbor/log/:/var/log/docker/:z - ./common/config/log/:/etc/logrotate.d/:z
docker-compose up -d #后台启动,如果容器不存在根据镜像自动创建
docker-compose down -v #使用此命令停止容器并删除容器更改路径才生效
4、修改docker的配置文件
vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd --insecure-registry 192.168.56.101
重启Docker服务
systemctl daemon-reload
systemctl restart docker
5、测试Docker推送镜像到Harbor仓库
①登录
[root@docker tools]# docker login -u admin -p Harbor12345 192.168.56.101 Login Succeeded
②Pull镜像
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE [root@docker ~]# docker pull daocloud.io/library/nginx:latest latest: Pulling from library/nginx 0a4690c5d889: Pull complete 9719afee3eb7: Pull complete 44446b456159: Pull complete Digest: sha256:f83b2ffd963ac911f9e638184c8d580cc1f3139d5c8c33c87c3fb90aebdebf76 Status: Downloaded newer image for daocloud.io/library/nginx:latest
③给镜像打Tag
[root@docker ~]# docker tag daocloud.io/library/nginx:latest 192.168.56.101/demon/nginx:v1
④推送镜像到Harbor仓库
[root@docker ~]# docker push 192.168.56.101/demon/nginx:v1 The push refers to a repository [192.168.56.101/demon/nginx] 589561a3ffb4: Pushed ef7dbb0cfc81: Pushed d56055da3352: Pushed v1: digest: sha256:0069dbf31a3ca8921b9ca112dead0ca95072af04c571c99974a65883bf8ca135 size: 948
⑤登录Harbor仓库验证
以上是关于linux运维架构之路-企业级镜像仓库Harbor的主要内容,如果未能解决你的问题,请参考以下文章
企业DevOps之路:Jenkins 集成 Harbor 自动发布镜像
Linux运维容器篇 docker私有仓库harbor生产搭建
Linux运维容器篇 docker私有仓库harbor生产搭建