您的位置:首页 > 编程语言 > Java开发

Spring cloud + Swarm mode 实战一:portus/harbor部署镜像私有仓库

2017-09-26 16:48 1136 查看

Portus:

简介

Registry2提供了快速存储和分发镜像的能力,但是没有提供权限控制,操作界面等功能,Portus则补足了这些点,主要提供以下功能:

1.基于token的身份认证

2.以用户和团队的视角,对镜像的pull和push操作进行访问控制

3.镜像数据同步以及镜像检索,删除界面操作

4.监控所有对私有仓库的操作

工程实例

portus-registry2

搭建http portus and http registry2

1.部署说明

将portus和registry2部署在同一台机子上,域名:myrepo.com

2.创建自签名证书:

在secrets目录下执行:

openssl req -newkey rsa:4096 -nodes -sha256 -keyout portus.key -x509 -days 3650 -out portus.crt


domain为:myrepo.com,主要用于portus和registry进行身份认证过程中传递token。

3.portus配置说明:

1).挂载portus配置文件:

volumes:
- ./config/portus/config.insecure.yml:/srv/Portus/config/config.yml


2).修改配置文件,重点关注配置项:

machine_fqdn: #域名
value: "myrepo.com"
check_ssl_usage: # 以http方式启动
enabled: false
delete: #允许镜像删除
enabled: true


registry配置说明:

1).使用portus作为登录registry的认证工具

compose file中:

REGISTRY_AUTH_TOKEN_REALM: http://${MACHINE_FQDN}:3000/v2/token REGISTRY_AUTH_TOKEN_SERVICE: ${MACHINE_FQDN}:5000
REGISTRY_AUTH_TOKEN_ISSUER: ${MACHINE_FQDN}
REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE: /secrets/portus.crt


2).通知

镜像变更时的钩子方法,用于将镜像数据同步到portus

REGISTRY_NOTIFICATIONS_ENDPOINTS: >
- name: portus
url: http://192.168.245.137:3000/v2/webhooks/events timeout: 2000ms
threshold: 5
backoff: 1s


注意:url必须使用ip,使用域名时(会报错,无法通知portus,目前未找到原因)

4.配置docker daemon

以非安全方式访问registry,修改/etc/docker/daemon.json:

{
"insecure-registries" : ["myrepo.com:5000"]
}


5.启动portus and registry

docker pull opensuse/portus:head
docker pull library/mariadb:10.0.23
docker pull library/registry:2.6

docker-compose -f docker-compose.insecure.yml up
docker-compose -f docker-compose.insecure.yml down


6.portus配置私仓

首次登陆,进行如下操作:

初始化管理员,如:admin/admin1234

配置registry,hostname:myrepo.com:5000,SSL不勾选。

7.上传镜像

先登陆registry:

docker login -u admin -p admin1234 myrepo.com:5000


登陆成功后,会在~/.docker中有记录,之后无需再次登陆.

上传镜像:

docker tag xx myrepo.com:5000/xx
docker push myrepo.com:5000/xx


8.删除镜像

1).portus中删除镜像

在portus中,删除某个镜像(整个仓库删除或删除某个tag对应的),但是这样只是删除元数据,磁盘空间并没有释放。

2).清理空间

进入registry容器

docker exec -it portuscomposeinsecure_registry_1 sh


执行清理:

registry garbage-collect /etc/docker/registry/config.yml


9.其他配置

命名空间

镜像仓库命名空间,用来编组镜像,主要有:

myrepo.com:5000/[镜像]

myrepo.com:5000/[用户名]/[镜像]

myrepo.com:5000/[自定义]/[镜像]

team:

用于编组用户,及关联多个镜像仓库命名空间。

team和用户,多对多

命名空间和team,多对1,1个命名空间不能同时关联多个team

拉取镜像的权限控制可选项:

任何人都能从指定命名空间拉取镜像

所有登陆用户可以从指定命名空间拉取镜像

只有team用户可以从指定命名空间拉取镜像

Harbor

Harbor是企业级的registry server在原docker registry的基础上提供了安全,身份认证,管理等功能,由Vmware公司开源,功能和protus差不多,系统架构:



亮点:

镜像复制功能,当push镜像到Registry时,会通过Job services异步地将镜像复制到另一个Harbor实例。

集成clair进行镜像安全漏洞扫描

使用在线方式安装

1.下载在线方式安装包:

https://github.com/vmware/harbor/releases中下载在线安装包。

2.安装

1).先配置harbor.cfg

必配置项:

hostname: 域名或ip(不要用127.0.0.1或localhost),推荐使用ip

其他的必配项,可以根据需要调整:

ui_url_protocol: 默认为http,(http或https)

db_password: 数据库密码

customize_crt: 默认on,自动生成根证书和私钥。registry’s token生成和验证时候需要用到。

ssl_cert: ssl方式访问时所需的证书

ssl_cert_key: ssl方式访问时需要的证书私钥

secretkey_path:复制registry时候使用

2).安装

集成clair漏洞扫描:

./install.sh --with-clair,


3.访问

]http://[hostname],默认用户/密码:admin/Harbor12345

4.停止:

docker-compose stop


5.重启:

docker-compose start


6.更改配置后重启

$ docker-compose down -v
$ vi harbor.cfg
$ ./prepare
$ docker-compose up -d


7.删除harbor,但保留数据

docker-compose down -v


8.删除harbor数据

$ rm -r /data/database
$ rm -r /data/registry


9.删除镜像

UI界面操作删除镜像,只是删除元数据,并未删除真实数据,还需要调用registry的garbage-collect进行清理

docker-compose stop
docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect --dry-run /etc/registry/config.yml #只是打印过程,并不删除

docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect /etc/registry/config.yml

docker-compose start


注意:配置文件config.yml挂载在/etc/registry/下.

10.修改harbor的访问端口

默认是80

1).修改docker-compose.yml

proxy:
image: library/nginx:1.11.5
restart: always
volumes:
- ./config/nginx:/etc/nginx
ports:
- 8888:80 ##改为8888
- 443:443
......


2).修改harbor.cfg,添加端口到参数”hostname”

hostname = myrepo2.com:8888


3).重启

按照###6.更改配置后重启。

11.查看日志

cd /var/log/harbor

参考:

Portus-github

Portus on Docker compose

Portus-docs

registry的token认证方式说明

harbor

9f53
user_guide

clair

安全防护工具之:Clair

clair无法使用的问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息