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.com2.创建自签名证书:
在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/Harbor123454.停止:
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的访问端口
默认是801).修改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-githubPortus on Docker compose
Portus-docs
registry的token认证方式说明
harbor
9f53
user_guide
clair
安全防护工具之:Clair
clair无法使用的问题
相关文章推荐
- Spring cloud + Swarm mode 实战二:部署微服务
- 可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
- docker 系列 - 企业级私有镜像仓库Harbor部署(转载)
- 巧用Docker镜像仓库Harbor部署私有Mirror服务
- 巧用Docker镜像仓库Harbor部署私有Mirror服务
- 可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
- 可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
- 使用官方 docker registry 搭建私有镜像仓库及部署 web ui
- Kubernetes如何使用Harbor作为私有镜像仓库
- 企业级镜像仓库harbor部署和注意事项
- 基于 Harbor 搭建 Docker 私有镜像仓库
- docker 私有镜像仓库 harbor 搭建
- 使用Harbor搭建Docker私有镜像仓库服务
- Harbor私有仓库中如何彻底删除镜像释放存储空间?
- docker 镜像仓库 Harbor 部署、 跨数据复制、升级
- 【转】Harbor 私有仓库简单部署
- docker从私有仓库Harbor, push 及 pull 镜像
- Harbor镜像仓库部署
- 企业级Docker私有仓库之Harbor部署(http)
- 基于 Harbor 搭建 Docker 私有镜像仓库