5

安装企业级docker镜像仓库Harbor

 3 years ago
source link: https://www.wencst.com/archives/1061
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Harbor官方介绍

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

Harbor安装环境

Centos: CentOS 7.3
Docker: 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. 3 root root      23 Dec  9 22:41 common
-rw-r--r--. 1 root root     813 Nov 20 13:59 docker-compose.chartmuseum.yml
-rw-r--r--. 1 root root     863 Nov 20 13:59 docker-compose.clair.yml
-rw-r--r--. 1 root root    1258 Nov 20 13:59 docker-compose.notary.yml
-rw-r--r--. 1 root root    3675 Nov 20 13:59 docker-compose.yml
drwxr-xr-x. 3 root root     136 Nov 20 13:59 ha
-rw-r--r--. 1 root root    7913 Nov 20 13:59 harbor.cfg
-rwxr-xr-x. 1 root root    6162 Nov 20 13:59 install.sh
-rw-r--r--. 1 root root   10768 Nov 20 13:59 LICENSE
-rw-r--r--. 1 root root     482 Nov 20 13:59 NOTICE
-rw-r--r--. 1 root root 1535603 Nov 20 13:59 open_source_license
-rwxr-xr-x. 1 root root   39132 Nov 20 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        2 weeks ago         210MB
goharbor/registry-photon      v2.6.2-v1.6.2       62c30cdb384a        2 weeks ago         196MB
goharbor/nginx-photon         v1.6.2              c0602500e829        2 weeks ago         132MB
goharbor/harbor-log           v1.6.2              781ee4ceb5d3        2 weeks ago         197MB
goharbor/harbor-jobservice    v1.6.2              3419a2276f96        2 weeks ago         192MB
goharbor/harbor-ui            v1.6.2              66268686bb96        2 weeks ago         215MB
goharbor/harbor-adminserver   v1.6.2              4024440925a4        2 weeks ago         181MB
goharbor/harbor-db            v1.6.2              0ed4186be0d1        2 weeks ago         219MB

启动的容器

[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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK