Harbor主页在:https://vmware.github.io/harbor/,Harbor是由Vmware中国团队开发并开源的Docker镜像仓库。
点击“INSTALL GUIDE OFHARBOR“链接到github。
安装方式非常简便,https://github.com/vmware/harbor/releases页面选择要下载的安装包。有在线安装与离线安装两类可选,建议先在线安装实验一次(离线安装是把依赖的镜像数下载下来)。
比如下载了harbor-online-installer-v1.1.2.tgz,
wgethttps://github.com/vmware/harbor/releases/download/v1.1.2/harbor-online-installer-v1.1.2.tgz
解压它:tar xvf harbor-online-installer-v1.1.2.tgz,进入解压后的目录:
在线安装时在此步并不下拉镜像,在下面的启动部分才开始下拉镜像。
重点关注下面几项:
hostname = reg.myhub.comui_url_protocol = httpsssl_cert = /root/cert/reg.myhub.com.crtssl_cert_key = /root/cert/reg.myhub.com.keyharbor_admin_password = Harbor12345 |
---|
hostname =reg.myhub.com就是你Harbor主机的hostname,也可以是IP;
ui_url_protocol=https,指定走https协议;
ssl_cert =/root/cert/reg.myhub.com.crt
ssl_cert_key =/root/cert/reg.myhub.com.key 指定证书地址,如果是内网就自己生成证书,公网用就购买证书吧。
harbor_admin_password = Harbor12345 指定你登陆Harbor的管理员密码,当然是建议你改一下,不然大家都知道这个密码了。
2 证书配置
由于咱们配置了证书,内网咱们自己生成证书。
创建证书目录:
mkdir –p /root/cert/
进入 / root /cert目录,创建CA认证:
1 创建CA证书openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt2 生成证书签名请求openssl req -newkey rsa:4096 -nodes -sha256 -keyout reg.myhub.com.key -out reg.myhub.com.csr3 生成主机证书openssl x509 -req -days 365 -in reg.myhub.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out reg.myhub.com.crt如果想用IP访问就做如下操作: echo subjectAltName = IP:192.168.4.101 > extfile.cnf openssl x509 -req -days 365 -in reg.myhub.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out reg.myhub.com.com.crt4 拷贝证书到客户端cp ca.crt /etc/docker/certs.d/reg.myhub.com/ca.crt |
---|
如果机器要通过docker loginreg.myhub.com登陆仓库,需要cp ca.crt /etc/docker/certs.d/reg.myhub.com/ca.crt。/etc/docker/certs.d/reg.myhub.com/目录不存在时自己创建,注意是复制ca.crt,不是reg.myhub.com.crt。
在harbor目录:
./install
一切顺利可以看到
docker ps可以看到有7个容器
Proxy:Harbor 的 registry,UI, token 等服务,通过一个前置的反向代理统一接收浏览器、Docker 客户端的请求,并将请求转发给后端不同的服务。
Registry:负责储存 Docker 镜像,并处理 dockerpush/pull 命令。由于我们要对用户进行访问控制,即不同用户对 Docker image 有不同的读写权限,Registry 会指向一个 token 服务,强制用户的每次 docker pull/push 请求都要携带一个合法的 token, Registry 会通过公钥对 token 进行解密验证。
Coreservices:这是 Harbor 的核心功能,主要提供以下服务:
UI:提供图形化界面,帮助用户管理 registry 上的镜像(image),并对用户进行授权;
webhook:为了及时获取registry 上 image 状态变化的情况,在 Registry 上配置 webhook,把状态变化传递给 UI 模块;
token 服务:负责根据用户权限给每个 docker push/pull 命令签发 token。Docker 客户端向Registry 服务发起的请求,如果不包含 token,会被重定向到这里,获得 token 后再重新向 Registry进行请求;
Database:为 coreservices 提供数据库服务,负责储存用户权限、审计日志、Docker image 分组信息等数据。
Log collector:为了帮助监控 Harbor 运行,负责收集其他组件的 log,供日后进行分析。各个组件之间的关系如下图所示:
通过https://reg.myhub.com进行访问,如果你是在Window机器上访问时无法解析reg.myhub.com,请在hosts中加一行配置:
[ip] reg.myhub.com
docker登陆:
默认Https端口是443,如果你想修改访问端口。修改三个文件:
Harbor目录下的docker-compose.yml文件:
主要是红色圈住部分,8088是Http访问端口,8443是Https访问端口,80是nginx的默认端口,443是nginx默认的https访问端口。
common/templates/nginx/nginx.https.conf,此文件作为harbor配置模板,我们修改如下部分:
指定转发的https端口。
common/templates/registry/config.yml 文件,修改如下:
加上一个端口,默认是443。
然后再一次./install。会删除先前的配置,重新配置,然后启动Harhor相关的容器。
访问http://reg.myhub.com:8088时自动定向到https://reg.myhub.com:8443。
此时我们用docker login reg.myhub.com:8443登陆时会报错,需要在登陆的机器上加上证书,路径是
/etc/docker/certs.d/reg.myhub.com:8433/ca.crt。先前咱们的路径是/etc/docker/certs.d/reg.myhub.com,由于端口变了此路径要随之变化。
INFRASTRUCTURE-Registries中添加一个注册,Rancher会读取此配置。
前面咱们配置的Https端口是8443,在此配置如下:
如果Harbor admin密码没修改就填写Harbor12345。
如果你不修443端口为8443,在此就不用设置端口,直接https://reg.myhub.com。
如果你不想在此配置镜像仓库的访问账号,你可以修改Docker的启动参数,可以参考官网:
https://docs.docker.com/engine/reference/commandline/dockerd/
使用--registry-mirror指定镜像仓库地址。
也可以修改/etc/docker/daemon.json文件(与版本有关,我使用的是docker1.13版本),加入registry-mirrors的地址,然后重启docker(servicedocker restart)。
{ "registry-mirrors": ["https://192.168.4.101:8443"]} |
---|
Shell容器打一个镜像tag,然后上传到reg.myhub.com:8443。
1 从官方下载一个nginx镜像:docker pull nginx
2 Harbor仓库中建立一个devops项目,并且设置为公开。
3 打一个tag:
docker tag nginx:latest reg.myhub.com:8443/devops/nginx:0.1
4 上传些镜像到reg.myhub.com:8443仓库:
docker push reg.myhub.com:8443/devops/nginx:0.1
5 Rancher中建立容器:
有人可能不喜欢有端口(8443)在地址栏,在镜像连接串中,你可以保持默认的443端口。
Harbor现在已经加入到了Rancher的应用商店,所以还可以直接在Rancher Catalog中加入Harbor。
在Catalog中搜索Harbor
View Details:
其中harbor-host=192.168.4.102,habor-lb-host=192.168.4.102是label,需要在Host中进行配置。
配置完成后提交,Rancher帮助建立一个名为project-harbor的栈,harbor-lb是Rancher提供的Haproxy代理,proxy是Harbor自带的nginx代理。
登陆密码默认是Vmware123!。