QuXiao's Blog

Life && Tech && Thoughts

使用Harbor创建private Docker Registry

Written on

背景

最近在规划2017年要做的事情,其中团队内部的测试环境构建是其中自己比较感兴趣的一个方向。考虑基于Docker来实现测试服务环境的构建,那么,第一步就是创建私有的Docker Registry。

其中,如果只是想有一个可以push/pull镜像的服务的话,直接用DockerHub就可以了,或者直接运行Docker registry镜像,就可以了。

docker run -p 5000:5000 registry:2.0

不过,既然是团队内部使用,那么安全、权限等方面要是需要满足的。最终找到了一个有VMware开源的项目—— Harbor

这个项目基于Docker Registry,围绕它又增加了许多功能,例如:

  • 角色权限管理
  • 镜像同步
  • 审计
  • Web界面
  • RESTful API

看起来,还是很符合需求的!

安装

下面简单介绍下安装Harbor的流程:

下载

Harbor Release 页面中下载安装包

wget https://github.com/vmware/harbor/releases/download/0.5.0/harbor-online-installer-0.5.0.tgz
tar -zxvf harbor-online-installer-0.5.0.tgz
cd harbor

配置

配置harbor.cfg,主要是配置IP(或者域名),以及HTTPS证书。另外,如果使用的不是默认的80/443端口的话,还需要单独到 docker-compose.yml 中进行修改。

因为考虑到安全因素,HTTPS协议是必需的,因此需要申请证书。这个大家可以从各大证书发行商申请,我这边使用 Let's encrpt 进行的申请,发现还是挺简单的。只需要简单几步:

git clone https://github.com/letsencrypt/letsencrypt.git
cd letsencrypt
sudo ./letsencrypt-auto --certonly
./letsencrypt-auto certonly -d your.domain.com

运行

首先运行 ./install.sh,这样整个环境就通过docker-compose运行起来了。

docker-compose up -d
docker-compose down

可以通过

curl -L 'https://your.domain.com:5000/v2'
{}

来进行验证。

如果修改了配置,需要运行 ./prepare

登录

docker login https://your.domain.com

发现的问题

使用的过程中,push image的时候遇到了 unauthorized: authentication required 的问题,网上能查到的,基本上是因为nginx中HTTPS配置的问题,但是看最新的Harbor proxy的配置中,已经加上了对应的配置。

# When setting up Harbor behind other proxy, such as an Nginx instance, remove the below line if the proxy already has similar settings.
proxy_set_header X-Forwarded-Proto $scheme;

最后我发现了问题:因为没有在对应用户下面创建对应的项目。Harbor的log提示得明显一点就更好了……

Web界面

--EOF--

This entry is posted in note.

comments powered by Disqus