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
③修改配置
[ ~]# cd /app/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对应服务的映射
默认用户:admin 密码:Harbor12345
⑤新建项目
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仓库
①登录
[ tools]# docker login -u admin -p Harbor12345 192.168.56.101 Login Succeeded
②Pull镜像
[ ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE [ ~]# 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
[ ~]# docker tag daocloud.io/library/nginx:latest 192.168.56.101/demon/nginx:v1
④推送镜像到Harbor仓库
[ ~]# 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