一:Harbor介绍

1、容器应用的开发和运行离不开可靠的镜像管理。从安全和效率等方面考虑,部署在私有环境内的 Registry 是非常必要的。

2、Harbor 是由 VMware 公司中国团队为企业用户设计的 Registry server 开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能,欢迎使用和反馈意见。

3、作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

1)基于角色的访问控制
用户与 Docker 镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。

2)镜像复制
镜像可以在多个 Registry 实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。

3)图形化用户界面
用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间。

4)AD/LDAP 支持
Harbor 可以集成企业内部已有的 AD/LDAP,用于鉴权认证管理。

5)审计管理
所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

6)国际化
已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。

7)RESTful API
RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。

8)部署简单
提供在线和离线两种安装工具, 也可以安装到 vSphere 平台(OVA 方式)虚拟设备

二:Harbor 架构介绍

Harbor在架构上主要由五个组件构成:

1、Proxy:
Harbor的registry, UI, token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。

2、Registry:
负责储存Docker镜像,并处理docker push/pull 命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token, Registry会通过公钥对token 进行解密验证。

3、Core services:
这是Harbor的核心功能,主要提供以下服务:

1)UI:提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权。

2)webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块。

3)token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regi?stry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。

4、Database:
为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。

5、Log collector:
为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

各个组件之间的关系如下图所示:
harbor

三:企业级私有仓库部署

环境:

root@monitor:~# docker --version
Docker version 19.03.2, build 6a30dfc
root@monitor:~# uname -a
Linux 4.15.0-65-generic #74~16.04.1-Ubuntu SMP Wed Sep 18 09:51:44 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

3.1 安装docker-compose

安装方法一

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

安装方法二

pip install docker-compose

查看安装的docker-compose版本信息:

docker-compose --version
docker-compose version 1.23.1, build 1719ceb

3.2 安装harbor

软件包下载地址:

https://github.com/goharbor/harbor/releases
tar xf harbor-offline-installer-v1.9.3.tgz
cd harbor/

修改harbor.yml文件中的IP地址与端口项:

hostname: 172.17.2.128
http:
 # port for http, default is 80. If https enabled, this port will redirect to https port
 port: 85
harbor_admin_password = admin		# harbor web页面后台密码
data_volume: /data/harbor_docker	# 挂载的目录 
./prepare		# 执行prepare文件
./install.sh	# 安装,会启动8个容器
root@virginia:~/docker/harbor# docker-compose ps
      Name                     Command                  State                 Ports
---------------------------------------------------------------------------------------------
harbor-core         /harbor/harbor_core              Up (healthy)
harbor-db           /docker-entrypoint.sh            Up (healthy)   5432/tcp
harbor-jobservice   /harbor/harbor_jobservice  ...   Up (healthy)
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp
harbor-portal       nginx -g daemon off;             Up (healthy)   8080/tcp
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:85->8080/tcp
redis               redis-server /etc/redis.conf     Up (healthy)   6379/tcp
registry            /entrypoint.sh /etc/regist ...   Up (healthy)   5000/tcp
registryctl         /harbor/start.sh                 Up (healthy)

修改配置文件:

root@virginia:~/docker/harbor# cat /etc/docker/daemon.json    
{
        "registry-mirrors": ["https://registry.docker-cn.com"],
        "insecure-registries": ["172.17.2.128"],  # 此为harbor的域名或地址,harbor默认提交方式采用https,这里修改为http方式
        "live-restore": true     # 重启docker服务,正在运行的docker不退出,即使关闭docker服务,运行的docker也不受影响
}
systemctl restart docker

Harbor web界面通过 http://IP:Port 访问

3.3 推送镜像

推送镜像前需要先登录仓库:

[root@node01 ~]# docker login 172.17.2.128
................................
Login Succeeded

给镜像打tag【tag 修改 image 的名字. 格式为: userip/项目名/image名字:版本号】

docker tag nginx 172.17.2.128/library/nginx:latest
docker push 172.17.2.128/library/nginx:latest

四:docker-compose命令

Docker compose的使用非常类似于docker命令的使用,但是需要注意的是大部分的compose命令都需要到docker-compose.yml文件所在的目录下才能执行。

compose以守护进程模式运行加-d选项:

docker-compose up -d

查看某一容器日志:

docker-compose logs web
docker-compose logs redis

容器服务停止,重启命令:

docker-compose stop|restart

停止所有容器:

docker-compose kill

删除compose服务:

docker-compose rm

更多的docker-compose命令可以使用docker-compose --help查看

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐