Harbor 简介

Harbor是Vmware开源的企业级Docker Registry管理项目,用于存储和分发Docker镜像。Harbor除了提供docker-registry外,还提供管理UI,基于角色的访问控制,日志审核等功能。

Harbor的所有组件都在Docker中部署,使用Docker compose 可以快速部署和管理。

github地址:https://github.com/vmware/harbor

Harbor 搭建

1. 环境准备

个人使用版本:
docker:17.06.2-ce
docker-compose:1.17.1
harbor:1.3.0-rc1

2. 安装 docker

根据自己系统,安装对应版本详细看:https://docs.docker.com/engine/installation/#cloud

3. 安装 docker-compose

下载docker-compose包:

  1. $ curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  2. $ sudo chmod +x /usr/local/bin/docker-compose

最新版本查看地址:https://github.com/docker/compose/releases
检查是否配置成功:

$ sudo docker-compose --version

4. 安装harbor:

下载 harbor包:

$ wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.3.0-rc1.tgz

最新版本查看:https://github.com/vmware/harbor/releases

加压 harbor包:

$ tar xvf harbor-offline-installer-v1.3.0-rc1.tgz

5. 配置docker-compose

进入到解压后的harbor文件夹,修改 harbor.cfg文件:

$ vim harbor.cfg

基本值都是默认,我只修改了:
hostname = XX.XX.XX.XX // 本机ip地址
其它配置都可以不改,然后仔细看下每个配置的作用便可,因为可能后面回用到。

6. 执行harbor下的 install.sh文件

$ ./install.sh

harbor服务就会根据docker-compose.yml的配置下载依赖的镜像,启动服务。

7. 浏览器访问

默认端口80,如果被占用,修改docker-compose.yml。
默认登录账号:admin 密码:Harbor12345(默认)
CentOS 搭建Harbor简单手记 - 图1

控制台登录harbor

当基于上面默认安装后,使用 docker login xx.xx.xx.xx 会报如下错误:

Error response from daemon: Get https://xx.xx.xx.xx/v2/: dial tcp xx.xx.xx.xx:443: getsockopt: connection refused

这时我们很容易就想到我们默认用的是http协议,未用https协议,也没配置SSL,所以这么让请求变成http协议。

解决方法:
新建个docker.service,并配置。

  1. 系统启动后docker执行:sudo systemctl enable docker
  2. 新建docker.service 并编辑:

    $ sudo vi /etc/systemd/system/multi-user.target.wants/docker.service
    
  3. 找到ExecStart这行,并在后面添加http://harbor ip,保存退出,同时如果你要配置国内加速器也在这里配置 —registry-mirror=https://registry.docker-cn.com

    ExecStart=/usr/bin/dockerd --insecure-registry http://xx.xx.xx.xx
    
  4. 加载配置,并重启docker

    $ sudo systemctl daemon-reload
    $ sudo systemctl restart docker
    
  5. 再次用登录

    $docker login xx.xx.xx.xx
    

上传自己的镜像

详细例子:
https://docs.docker.com/get-started/part2/#tag-the-image

  1. 打标签

    $ docker tag SOURCE_IMAGE[:TAG] xx.xx.xx.xx/项目名/IMAGE[:TAG]
    
  2. 上传

    $docker push xx.xx.xx.xx/项目/IMAGE[:TAG]
    

下载镜像

$ docker pull xx.xx.xx.xx/项目名/IMAGE:latest