Harbor 仓库介绍
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
Harbor核心组件解释
Proxy:他是一个nginx的前端代理,代理Harbor的registry,UI, token等服务。
db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权。
jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log。
Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
Registry:镜像仓库,负责存储镜像文件。
Harbor和Registry的比较
Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。
- 提供分层传输机制,优化网络传输
Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。 - 提供WEB界面,优化用户体验
只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。 - 支持水平扩展集群
当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。 - 良好的安全机制
企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。 - Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制。kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。
安装环境
1.docker 版本17.06.0+
2.docker-compose 版本 1.18.0+
3.关闭防火墙,安全性
4.CentOS 7 系统,可联网
一、安装docker步骤
1.添加docker-ce源
cd /etc/yum.repos.d
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
注意:若无法使用wget下载,可先下载,再上传到Linux相关目录下
2.安装docker
yum -y install docker-ce
3.启动docker
systemctl start docker
4.将docker设置为开机自启
systemctl enable docker
二、安装docker-compse
1. 先安装epel源
yum install -y epel-release
2. 安装docker-compose
yum -y install docker-compose
三、安装harbor仓库
1. 下载harbor离线安装包
创建镜像存放路径
mkdir -p /mnt/homelab_mfs/homelab_core_data/k8s/harbor
下载离线包
wget https://github.com/goharbor/harbor/releases/download/v2.3.2/harbor-offline-installer-v2.3.2.tgz
2. 解压harbor
tar xvf harbor-offline-installer-v2.3.2.tgz -C /usr/local/
3. 导入docker镜像
cd /usr/local/harbor
docker image load -i harbor.v2.3.2.tar.gz
4. 修改第harbor.yml配置文件
cd /usr/local/harbor
# 拷贝配置模板
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
主要修改主机名为本机IP
hostname = 10.20.30.40
再注释掉https相关配置即可,其他可根据需要修改!
参考配置
hostname: 192.168.7.81 http: port: 8080 harbor_admin_password: Harbor12345 database: password: root123 max_idle_conns: 100 max_open_conns: 900 data_volume: /mnt/homelab_mfs/homelab_core_data/k8s/harbor trivy: ignore_unfixed: false skip_update: false insecure: false jobservice: max_job_workers: 10 notification: webhook_job_max_retry: 10 chart: absolute_url: disabled log: level: info local: rotate_count: 50 rotate_size: 200M location: /data1/logs/harbor _version: 2.3.0 proxy: http_proxy: https_proxy: no_proxy: components: - core - jobservice - trivy
注意:
- 安装v2.x系列,必须先导入镜像,再拷贝harbor.yml.tmpl模板,顺序不能乱,并且直接使用harbor.yml.tmpl模板作为配置文件,只能使用harbor.yml 作为配置文件。
- v1.x系列安装没有导入docker镜像这一步,直接修改配置文件harbor.cfg 即可,后面操作一样。
5. 检测harbor
./prepare
6. 安装harbor
./install.sh
7.查看服务器运行的容器
docker ps
8.访问Harbor管理系统
地址: http://10.20.30.40
默认账号: admin
密码: Harbor12345
9.相关命令
- 后台启动,如果容器不存在根据镜像自动创建
- docker-compose up -d
- 停止容器并删除容器
- docker-compose down -v
- 启动仓库,容器不存在就无法启动,不会自动创建镜像
- docker-compose start
- 停止仓库
- docker-compose stop
10.创建项目
上传镜像
1. 下载官方tomcat镜像
docker pull tomcat
注意:如下载过慢,可以添加国内仓库:
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://fskvstob.mirror.aliyuncs.com/"]
}
# 重新加载
systemctl daemon-reload
# 重启docker
systemctl restart docker
2. 给tomcat镜像打标签
docker tag tomcat 192.168.154.133/maven-test01/tomcat:v1
3. 登陆harbor
docker login 192.168.154.133
此时会出现如下报错:
解决方案:
cd /usr/lib/systemd/system
vim docker.service
在 ExecStart
中间增加
--insecure-registry=192.168.154.133
# 重新加载
systemctl daemon-reload
# 重启docker
systemctl restart docker
4. 再次登录
docker login 192.168.154.133
5. 上传镜像到仓库
docker push 192.168.154.133/maven-test01/tomcat:v1