企业实战--持续集成与持续交付( harbor企业级私有仓库的安装部署)docker内容补充
一、HarborHarbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum可以提供存储chart数据的仓库【注:helm就相当于k8s的yum
一、Harbor
Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum可以提供存储chart数据的仓库【注:helm就相当于k8s的yum】。另外它还整合了两个开源的安全组件,一个是Notary,另一个是Clair,Notary类似于私有CA中心,而Clair则是容器安全扫描工具,它通过各大厂商提供的CVE漏洞库来获取最新漏洞信息,并扫描用户上传的容器是否存在已知的漏洞信息,这两个安全功能对于企业级私有仓库来说是非常具有意义的。
简单来说harbor就是VMWare公司提供的一个docker私有仓库构建程序,功能非常强大.
支持多租户签名和认证
支持安全扫描和风险分析
这次日志审计
基于角色的访问控制
支持可扩展的API和GUI
Image replication between instances
国际化做的很好(目前仅支持英文和中文)
二、安装部署harbor
部署harbor所需要的环境
harbor支持k8s的helm安装和本地安装,我这次先择的安装方式是本地安装。
1.需要安装docker并运行,harbor的运行依赖于docker服务
2.需要安装docker-compose,他可以把多容器运行构建出一个整体服务。harbor就是多个容器一起运行结果
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
给docker-compose执行权限,运行命令:
chmod +x /usr/local/bin/docker-compose
检查,运行docker-compose --version,如下:
[root@server1 ~]# docker-compose --version
docker-compose version 1.23.2, build 1110ad01
安装
[root@server1 ~]# tar zxf harbor-offline-installer-v1.10.
[root@server1 ~]# cd harbor/
[root@server1 harbor]# ls
common.sh harbor.v1.10.1.tar.gz harbor.yml install.sh LICENSE prepare
harbor.yml 就是harbor的配置文件,编辑harbor.yml,修改hostname、https证书路径、admin密码
每次修改完配置文件后都需要运行
[root@server1 harbor]# ./prepare
运行 ./install.sh
[root@server1 harbor]# ./install.sh
常用管理命令,一定要在harbor目录中运行
停止服务: docker-compose stop
开始服务: docker-compose start
重启服务:docker-compose restart
停止服务并删除容器:docker-compose down
启动服务并运行容器:docker-compose up
制作证书
[root@server1 ~]# mkdir -p certs
[root@server1 ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/reg.westos.org.key -x509 -days 365 -out certs/reg.westos.org.crt
填写信息后打开certs目录即可看到证书:
[root@server1 ~]# cd certs/
[root@server1 certs]# ls
reg.westos.org.crt reg.westos.org.key
三、GUIl界面使用
浏览器访问https://reg.westos.org
:注意解析
这里的项目就是一私有化的Docker镜像仓库,默认的仓库是library。
四、本机上传拉取镜像
修改Docker配置
docker 默认是按 https 请求的
修改文件 /etc/docker/daemon.json,走非加密通道
[root@server1 harbor]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://ioeo57w5.mirror.aliyuncs.com"]
}
{
"insecure-registries": ["reg.westos.org"]
}
然后重启docker
systemctl daemon-reload
systemctl restart docker
制作镜像
docker tag ubuntu:latest reg.westos.org/cl/ubuntu:latest
本机上传
首先登陆私有库
[root@server1 harbor]# docker login reg.westos.org
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
接下来进行PUSH:
[root@server1 harbor]# docker push reg.westos.org/library/ubuntu
The push refers to repository [reg.westos.org/library/ubuntu]
16542a8fc3be: Pushed
6597da2e2e52: Pushed
977183d4e999: Pushed
c8be1b8f4d60: Pushed
latest: digest: sha256:e5dd9dbb37df5b731a6688fa49f4003359f6f126958c9c928f937bec6983
本机拉取
[root@server1 harbor]# docker rmi reg.westos.org/library/ubuntu #删除原来的镜像
Untagged: reg.westos.org/library/ubuntu:latest
Untagged: reg.westos.org/library/ubuntu@sha256:e5dd9dbb37df5b731a6688fa49f4003359f6f126958c9c928f937bec69836320
[root@server1 harbor]# docker pull reg.westos.org/library/ubuntu #拉取镜像
Using default tag: latest
latest: Pulling from library/ubuntu
Digest: sha256:e5dd9dbb37df5b731a6688fa49f4003359f6f126958c9c928f937bec69836320
Status: Downloaded newer image for reg.westos.org/library/ubuntu:latest
reg.westos.org/library/ubuntu:latest
五、远程主机上传下载镜像
准备一台安装好docker的虚拟机server3
首先需要做解析:
[root@server2 ~]# cat /etc/hosts
172.25.63.3 server1 reg.westos.org
daemon文件配置:
[root@server2 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://reg.westos.org"]
}
建立证书目录:
[root@server2 ~]# mkdir -p /etc/docker/certs.d/reg.westos.org
把crt证书放到/etc/docker/certs.d/harbor.dinginfo.com目录下并命名为ca.crt:
[root@server2 ~]# ls /etc/docker/certs.d/reg.westos.org
ca.cr
然后,重启docker
systemctl daemon-reload
systemctl restart docker
再来登录:
[root@server2 ~]# docker login reg.westos.org
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
上传镜像:
[root@server2 ~]# docker tag nginx:latest reg.westos.org/library/nginx
[root@server2 ~]# docker push reg.westos.org/library/nginx
测试下载:
[root@server2 ~]# docker pull reg.westos.org/library/ubuntu
六、为harbor添加内容扫描
首先需要关闭之前的容器:
[root@server1 harbor]# docker-compose down
清理配置文件:
[root@server1 harbor]# ./prepare
加上内容信任,扫描器和helm仓库重新安装:
[root@server1 harbor]# ./install.sh --with-notary --with-clair --with-chartmuseum
刷新网页端可以看到多了一些配置:
可以看到以前上传的镜像都是没有经过扫描的,可以对已经上传的镜像进行扫描:
也可以配置镜像上传的时候自动扫描:
测试上传镜像:
[root@server1 harbor]# docker push reg.westos.org/library/base-debian10
七、配置harbor内容签名
签名属于内容信任,没有签名的内容可以选择不部署。
可以看到刚上传的内容是没有签名的。
内容信任的服务端口是4443,接下来就进行harbor内容信任的配置:
1.将证书放在指定位置
[root@server1 ~]# mkdir /root/.docker/tls/reg.westos.org\:4443/
[root@server1 reg.westos.org:4443]# cp /etc/docker/certs.d/reg.westos.org/ca.crt .
[root@server1 reg.westos.org:4443]# ls
ca.crt
2.打开内容信任功能:
[root@server1 reg.westos.org:4443]# export DOCKER_CONTENT_TRUST=1
[root@server1 reg.westos.org:4443]# export DOCKER_CONTENT_TRUST_SERVER=https://reg.westos.org:4443
配置完成。
3.测试上传
在网页端将刚上传的镜像删除后再进行上传测试:
注意:,签名与tag中的v1绑定,上传时必须指定tag中版本,要不然会跳过签名。
之后上传时每次都需要输入根密钥和仓库密钥,而仅当tag不同时仅需要输入仓库密钥。
4.打开项目内容信任功能
即不允许没有签名的镜像上传下载。
5.删除签名镜像
以签名的镜像时不能删除的,如果需要删除则需要先删除签名:
先查看签名信息:
[root@server1 ~]# docker trust inspect reg.westos.org/library/base-debian10
删除签名:
[root@server1 ~]# docker trust revoke reg.westos.org/library/base-debian10
更多推荐
所有评论(0)