www.icesr.com
IT运维工程师的摇篮

搭建docker私有仓库 — Harbor

Harbor 介绍

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

环境、软件准备

  1. Linux CentOS 7.3

  2. Docker(version:1.12.6)

  3. Docker-compose(version:1.17.1)

  4. Harbor (version:1.1.2)

docker 安装

docker安装步骤在另一篇文章汇总有描述:docker安装、操作常用命令

docker-compose安装

<code>pip install <span class="hljs-attribute">-U</span> docker<span class="hljs-attribute">-compose</span></code>

Harbor 服务搭建

下载Harbor安装文件

从 github harbor 官网 release 页面下载指定版本的安装包。

<code>wget https:<span class="hljs-comment">//github.com/vmware/harbor/releases/download/v1.1.2/harbor-online-installer-v1.1.2.tgz</span>

tar xvf harbor<span class="hljs-attribute">-online</span><span class="hljs-attribute">-installer</span><span class="hljs-attribute">-v1</span><span class="hljs-number">.1</span><span class="hljs-number">.2</span><span class="hljs-built_in">.</span>tgz</code>

配置Harbor

解压缩之后,目录下会生成harbor.conf文件,该文件就是Harbor的配置文件。

<code><span class="hljs-preprocessor"># 1. hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost</span>
<span class="hljs-preprocessor"># 2. 默认情况下,harbor使用的端口是80,若使用自定义的端口,除了要改docker-compose.yml文件中的配置外,</span>
<span class="hljs-preprocessor"># 这里的hostname也要加上自定义的端口,都在在docker login、push时会报错</span>
hostname = <span class="hljs-number">10.0</span><span class="hljs-number">.11</span><span class="hljs-number">.150</span>:<span class="hljs-number">5000</span>

<span class="hljs-preprocessor"># 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on</span>
ui_url_protocol = http

<span class="hljs-preprocessor"># mysql数据库root用户默认密码root123,实际使用时修改下</span>
db_password = root123

<span class="hljs-preprocessor">#Maximum number of job workers in job service  </span>
max_job_workers = <span class="hljs-number">3</span> 

<span class="hljs-preprocessor">#The path of secretkey storage</span>
secretkey_path = /data

<span class="hljs-preprocessor"># 启动Harbor后,管理员UI登录的密码,默认是Harbor12345</span>
<span class="hljs-preprocessor"># 若修改了此处的admin登录密码。则登录后台时使用修改后的密码</span>
harbor_admin_password = Harbor12345

<span class="hljs-preprocessor"># 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证</span>
auth_mode = db_auth

<span class="hljs-preprocessor"># 是否开启自注册</span>
self_registration = on

<span class="hljs-preprocessor"># Token有效时间,默认30分钟</span>
token_expiration = <span class="hljs-number">30</span>

<span class="hljs-preprocessor"># 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)</span>
project_creation_restriction = everyone</code>

注:这里只摘录了部分配置项,详细的配置项可以在harbor.conf文件中查看,并且都有解释

更改端口号

由于habor默认使用80端口,而80端口又比较特殊,可能别的地方也会用到,那么我们就需要更改一下端口进行启动使用。

打开 docker-compose.yml(此处只摘录需要修改端口号的部分配置):

<code>proxy:
    image: vmware/nginx:1.11.5-patched
    container_name: nginx
    restart: always
    volumes:
      -<span class="ruby"> ./common/config/<span class="hljs-symbol">nginx:</span>/etc/<span class="hljs-symbol">nginx:</span>z
</span>    networks:
      -<span class="ruby"> harbor
</span>    ports:
      -<span class="ruby"> <span class="hljs-number">5000</span><span class="hljs-symbol">:</span><span class="hljs-number">80</span>  <span class="hljs-comment"># 修改端口号则修改此处,前面的位宿主机的端口,后面的是容器中的端口,只修改前面的即可</span>
</span>      -<span class="ruby"> <span class="hljs-number">443</span><span class="hljs-symbol">:</span><span class="hljs-number">443</span>
</span>      -<span class="ruby"> <span class="hljs-number">4443</span><span class="hljs-symbol">:</span><span class="hljs-number">4443</span>
</span>    depends_on:
      -<span class="ruby"> mysql
</span>      -<span class="ruby"> registry
</span>      -<span class="ruby"> ui
</span>      -<span class="ruby"> log
</span>    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "proxy"</code>

如上面配置中的注释所说,原来的端口映射为:80:80,此处我修改为5000:80,根据需要修改即可。最重要的是,此处修改完之后,一定要将harbor.conf配置文件中的hostname一块修改下,改成:ip:port。ip就是部署harbor的机器IP,port就是这里设置的端口号。

更改挂载私有库镜像目录

一般情况下,我们都会将容器启动的私有仓库服务中的镜像保存目录挂载到宿主机上的某个目录,这样能够保存镜像文件,使仓库镜像不易流失。在harbor中也有配置会指定目录挂载的映射关系。

打开 docker-compose.yml(此处只摘录需要修改挂载目录的部分配置):

<code>registry:
    image: vmware/registry:2.6.1-photon
    container_name: registry
    restart: always
    volumes:
      -<span class="ruby"> /data/docker/<span class="hljs-symbol">registry:</span>/<span class="hljs-symbol">storage:</span>z  <span class="hljs-comment"># 看这里,挂载目录就是修改这行配置</span>
</span>      -<span class="ruby"> ./common/config/registry/<span class="hljs-symbol">:/etc/registry/</span><span class="hljs-symbol">:z</span>
</span>    networks:
      -<span class="ruby"> harbor
</span>    environment:
      -<span class="ruby"> <span class="hljs-constant">GODEBUG</span>=netdns=cgo
</span>    command:
      ["serve", "/etc/registry/config.yml"]
    depends_on:
      -<span class="ruby"> log
</span>    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "registry"</code>

从上面的配置及注释知道需要修改那块配置了。/data/docker/registry:/storage:z,这里默认的挂载目录是/var/lib/registry,我修改成了/data/docker/registry,即只需要修改前半部分即可,可根据自己需要修改,其他地方不需要改动。

启动 Harbor

修改完配置文件后,在当前目录执行./install.shHarbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各个服务。

注:可能下载下来的文件中,install.sh没有执行的权限,所有需要更改权限

<code><span class="hljs-preprocessor"># 添加执行权限(需要sudo)</span>
chmod <span class="hljs-number">755</span> install.sh

<span class="hljs-preprocessor"># 同时需要修改下面这个文件的权限,否则执行会报错</span>
chmod <span class="hljs-number">755</span> prepare</code>

下面这张图是开始进行harbor部署的执行情况:

这里写图片描述

查看harbor后台

登录界面(使用配置文件中写的密码登录):

这里写图片描述

首页:

这里写图片描述

未经允许不得转载:冰点网络 » 搭建docker私有仓库 — Harbor

分享到:更多 ()

评论 抢沙发

评论前必须登录!