使用Harbor建立私有docker仓库

介绍

Harbor

harbor是vmware提供的一个开源的企业级docker仓库方案,可以提供跨数据中心的景象同步备份

有很多地方提供免费的docker私有仓库,然而最合理的方式还是保存在自己私有仓库中。

Docker官方的hub也提供免费的私有仓库,但是只提供1个私有仓库。Gitlab也为没给项目提供免费的私有仓库,但是不清楚有什么限制。(Gitlab真有钱,无限免费仓库,2kMin的ci,还有这个貌似无限制的docker私有仓库)

安装registry

如果不需要网页管理什么的直接部署官方的registry容器就行了

docker run -d -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest

/data/registry:/var/lib/registry 默认上传的仓库会保存在docker的/var/lib/registry目录中,可以选择映射到实机的目录下

但是如果要一些更好用的管理方式的话harbor是一个不错的选择安装Harbor

安装docker和docker compose

安装参照官方文档这里就不重复讲了docker,docker compose

安装Harbor

下载最新的Harbor

解压后修改harbor.cfg

#绑定域名
hostname = docker.*.com
#ui协议可选http和https
ui_url_protocol = https
#ssl证书位置,选择https之后需要上传域名的ssl证书
#并指定位置
ssl_cert = /root/harbor/cert/server.crt
ssl_cert_key = /root/harbor/cert/server.key
#是否开启注册
self_registration = off

修改完保存后运行./install.sh

等待安装完成打开https://docker.*.com就可以直接访问Harbor的UI控制页面默认用户名密码admin/Harbor12345

修改端口

如果80和443被占用且不能不用的话就只能修改Harbor的端口,修改docker-compose.yml文件,编辑proxy节点

#修改端口
    ports:
      - 80:80
      - 443:443
      - 4443:4443

并且修改harbor.cfg的hostname加入新的端口,如在使用https的情况,切修改443端口为1443,则hostname为docker.*.com:1443。(然而在修改端口后出现无法复制仓库到另一个Harbor的情况,暂时未找到解决方案,所以建议还是使用默认端口比较好)

进行复制仓库

进入系统管理-仓库管理-新建目标 输入目标名,地址,用户名和密码。如果修改过端口的需要加入端口号,点击测试。

进入复制管理-新建规则 输入规则名,输入本地的项目名,再选择目标。再选择触发模式

  • 手动,push新的镜像并不会复制,需要手动到网页中操作复制
  • 即刻,push新的镜像之后会立即开始复制
  • 定时,到指定时间会开始复制

docker操作

在需要push镜像的机器上登陆仓库docker login docker.*.com

在项目中标记镜像:
 
docker tag SOURCE_IMAGE[:TAG] docker.*.com/项目名/IMAGE[:TAG]
  
 
推送镜像到当前项目:
 
docker push docker.*.com/项目名/IMAGE[:TAG]

就可以成功的push镜像并复制到另一台机器上