安装企业级docker镜像仓库Harbor

作者: wencst 分类:docker,架构设计 发布时间: 2018-12-26 10:05 阅读: 1,329 次

Harbor官方介绍

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

Harbor安装环境

Centos: CentOS 7.3Docker:18.03.1-ce
Docker-composer: 1.23.2
Harbor: harbor-offline-installer-v1.6.2.tgz

harbor 1.6.2 需要的运行环境:docker 17.03.0-ce+ and docker-compose 1.10.0+ .

Harbor安装

Harbor支持在线和离线两种安装方式,本文采用在线方式安装。在线安装安装过程中需要下载docker镜像,离线包则已经有相关镜像

离线包可以在百度云盘下载:

链接:https://pan.baidu.com/s/1hWeEu4J-o1LYFrFgWOmQww     
提取码:q9q7

在线安装包可以在下面的连接下载:

链接:https://pan.baidu.com/s/1FbB-QCB63k6psOtpOkvXYw 
提取码:o72z 把安装压缩包 harbor-offline-installer-v1.6.2.tgz 上传到服务器

1、解压

[root@localhost harbor]# tar xvf harbor-offline-installer-v1.6.2.tgz

2、配置

在harbor的解压目录里,有下列文件,其中 harbor.cfg是配置文件,install.sh是安装文件

drwxr-xr-x. 3root root23Dec9 22:41 common
-rw-r--r--. 1root root813Nov20 13:59 docker-compose.chartmuseum.yml
-rw-r--r--. 1root root863Nov20 13:59 docker-compose.clair.yml
-rw-r--r--. 1root root1258Nov20 13:59 docker-compose.notary.yml
-rw-r--r--. 1root root3675Nov20 13:59 docker-compose.yml
drwxr-xr-x. 3root root136Nov20 13:59 ha
-rw-r--r--. 1root root7913Nov20 13:59 harbor.cfg
-rwxr-xr-x. 1root root6162Nov20 13:59 install.sh
-rw-r--r--. 1root root10768Nov20 13:59 LICENSE
-rw-r--r--. 1root root482Nov20 13:59 NOTICE
-rw-r--r--. 1root root1535603Nov20 13:59 open_source_license
-rwxr-xr-x. 1root root39132Nov20 13:59 prepare

下面修改一些示例中使用的参数,更详细的参数请参考:https://github.com/goharbor/harbor/blob/v1.6.2/docs/installation_guide.md

vim harbor.cfg

修改配置,使用IP地址访问harbor,暴露的端口是5000

# 监听地址,不能设置为127.0.0.1或者localhost,这里设置的是docker host的ip地址
hostname = 192.168.88.30:5000
# 登录密码,默认密码:Harbor12345
harbor_admin_password = 123456

修改docker-compose.yml,映射容器中的80端口到host的5000端口

proxy:
    image: goharbor/nginx-photon:v1.6.2
    container_name: nginx 
    restart: always
    volumes:
      - ./common/config/nginx:/etc/nginx:z
    networks:
      - harbor
    ports:
      #需要改这里
      - 5000:80-443:443-4443:4443

3. 安装

运行安装目录里面的 install.sh。耐心等待,如果是在线安装版本,需要下载一些docker镜像,如果已经  docker – 镜像加速器 配置了加速器,那是相当快的。

./install.sh

下载的镜像如下:

[root@localhost harbor]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
goharbor/redis-photon         v1.6.2              473bfdd9d245        2weeks ago210MB
goharbor/registry-photon      v2.6.2-v1.6.2       62c30cdb384a        2weeks ago196MB
goharbor/nginx-photon         v1.6.2c0602500e8292weeks ago132MB
goharbor/harbor-log           v1.6.2              781ee4ceb5d3        2weeks ago197MB
goharbor/harbor-jobservice    v1.6.2              3419a2276f96        2weeks ago192MB
goharbor/harbor-ui            v1.6.2              66268686bb96        2weeks ago215MB
goharbor/harbor-adminserver   v1.6.2              4024440925a4        2weeks ago181MB
goharbor/harbor-db            v1.6.2              0ed4186be0d1        2weeks ago219MB

启动的容器

[root@localhost harbor]# docker ps
CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS                                 PORTS                                                                NAMES
18c82d20d070        goharbor/harbor-jobservice:v1.6.2        "/harbor/start.sh"       2 minutes ago       Up About a minute                                                                                           harbor-jobservice
1a807ff9307d        goharbor/nginx-photon:v1.6.2             "nginx -g 'daemon of…"   2 minutes ago       Up About a minute (health: starting)   0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:5000->80/tcp   nginx
83428db239b3        goharbor/harbor-ui:v1.6.2                "/harbor/start.sh"       2 minutes ago       Up 23 seconds (health: starting)                                                                            harbor-ui
d785d1e0b4fb        goharbor/redis-photon:v1.6.2             "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes                           6379/tcp                                                             redis
126657d6e33c        goharbor/harbor-adminserver:v1.6.2       "/harbor/start.sh"       2 minutes ago       Restarting (1) 3 seconds ago                                                                                harbor-adminserver
1ac23c837879        goharbor/registry-photon:v2.6.2-v1.6.2   "/entrypoint.sh /etc…"   2 minutes ago       Up 2 minutes (healthy)                 5000/tcp                                                             registry
d080851c8190        goharbor/harbor-db:v1.6.2                "/entrypoint.sh post…"   2 minutes ago       Up 2 minutes (healthy)                 5432/tcp                                                             harbor-db
b47254ceba04        goharbor/harbor-log:v1.6.2               "/bin/sh -c /usr/loc…"   2 minutes ago       Up 2 minutes (healthy)                 127.0.0.1:1514->10514/tcp                                            harbor-log

默认情况下,docker是不给你直接用IP地址访问HARBOR的,但是在host里面使用curl命名是可以访问的

解决这个问题的方法:

需要在docker的安全检查那里添加白名单

#vim /usr/lib/systemd/system/docker.service  

#修改如下一行
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.88.30:5000

重新访问

用系统管理员账户登录后,可以看到有一个默认的public项目

4. 推送镜像到harbor

接下来,我们把在 docker – dockerfile构建一个简单的springboot应用镜像 文章中做的springboot-docker镜像推送到harbor中。

首先,在harbor里创建一个test-project项目

如果访问级别设为公布,所有人都可以不需要登录就可以拉取和推送镜像。

命令行登录harbor

docker login 192.168.88.30:5000

出现以下问题

Error response from daemon: Get https://192.168.88.30:5000/v2/: http: server gave HTTP response to HTTPS client

需要在docker的安全检查那里添加白名单

#vim /usr/lib/systemd/system/docker.service  

#修改如下一行
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.88.30:5000

重启docker

systemctl daemon-reload
systemctl restart docker.service

重新登录

[root@localhost harbor]# docker login 192.168.88.30:5000
Username: admin
Password: 
Login Succeeded

查看下我们现在的镜像

[root@localhost springboot-docker]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED              SIZE
springboot-docker             1.0                 3be343b3b3ea        About a minute ago   121MB

仓库拉取或者推送的命名格式:

${IP或者域名}/${项目}/${模块}:${tag}

原来的springboot-docker项目打标签,推送到harbor。

[root@localhost ~]# docker tag springboot-docker:1.0 192.168.88.30:5000/test-project/springboot-docker:1.0
[root@localhost ~]# docker images
REPOSITORY                                          TAG                 IMAGE ID            CREATED             SIZE
192.168.88.30:5000/test-project/springboot-docker   1.0                 3be343b3b3ea        10 hours ago        121MB
springboot-docker                                   1.0                 3be343b3b3ea        10 hours ago        121MB
[root@localhost ~]# docker push 192.168.88.30:5000/test-project/springboot-docker:1.0The push refers to repository [192.168.88.30:5000/test-project/springboot-docker]
fff182a7c29a: Pushed 
f7b41bda6817: Pushed 
ed6f0bd39121: Pushed 
0c3170905795: Pushed 
df64d3292fd6: Pushed 
1.0: digest: sha256:f37dc7dbb294a3e1eb7f53d8ad7616068dccf7996233bc8b72578d96aabee1fa size: 1366

推送完毕后,通过页面可以看到相应的镜像

拉取私库中的镜像:

docker pull 192.168.88.30:5000/test-project/springboot-docker:1.0

来源于网络:

https://my.oschina.net/thinwonton/blog/2986070

如果文章对您有用,扫一下支付宝的红包,不胜感激!

欢迎加入QQ群进行技术交流:656897351(各种技术、招聘、兼职、培训欢迎加入)



Leave a Reply