博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker(六):企业级私有仓库
阅读量:3588 次
发布时间:2019-05-20

本文共 4461 字,大约阅读时间需要 14 分钟。

Docker企业级私有仓库

一: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 --versionDocker version 19.03.2, build 6a30dfcroot@monitor:~# uname -aLinux 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-composesudo chmod +x /usr/local/bin/docker-compose

安装方法二

pip install docker-compose

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

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

3.2 安装harbor

软件包下载地址:

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

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

hostname: 172.17.2.128http: # port for http, default is 80. If https enabled, this port will redirect to https port port: 85harbor_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/tcpharbor-jobservice   /harbor/harbor_jobservice  ...   Up (healthy)harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcpharbor-portal       nginx -g daemon off;             Up (healthy)   8080/tcpnginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:85->8080/tcpredis               redis-server /etc/redis.conf     Up (healthy)   6379/tcpregistry            /entrypoint.sh /etc/regist ...   Up (healthy)   5000/tcpregistryctl         /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:latestdocker 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 webdocker-compose logs redis

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

docker-compose stop|restart

停止所有容器:

docker-compose kill

删除compose服务:

docker-compose rm

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

转载地址:http://fzvwn.baihongyu.com/

你可能感兴趣的文章
逻辑运算vs按位运算
查看>>
异或交换两个变量的值
查看>>
7-9 整除光棍
查看>>
SpringBoot项目集成Mybatis
查看>>
idea数据库插件的使用
查看>>
idea集成热部署DevTools
查看>>
SpringBoot项目集成mybatis generator
查看>>
使用vue cli创建控台管理项目
查看>>
SpringBoot项目集成bootstrap后台管理模板ace
查看>>
执行npm run serve报错
查看>>
跨域问题
查看>>
javaScript中“==“和“===“的区别详解
查看>>
前后端分离跨域项目,sessionId不一致问题
查看>>
20180820 Java day01
查看>>
DAY01
查看>>
DAY02
查看>>
DAY03-数据结构
查看>>
DAY02java代码
查看>>
DAY04
查看>>
DAY04 -- 学习纲要
查看>>