图形化界面的私有仓库 Harbor 服务

概述

  • 最近创鑫公司又提出一个新需求,将项目全部打包成镜像部署私有仓局,经过几轮商讨,最终选择Docker Harbor

  • Docker Harbor 有可视化的web管理界面,可以方便管理Docker镜像,又提供了多个项目的镜像权限管理及控制功能

  • Harbor是VMware公司开源的企业级Docker registry项目

  • Harbor的优势
    ♦ 基于角色控制
    ♦ 基于镜像的复制策略
    ♦ 基于LDAP / AP
    ♦ 图像删除和垃圾收集
    ♦ 图形UI
    ♦ 审计
    ♦ RESTful API

注释: RESTful 是一种规范和标准 ,API 接口

操作环境

Harbor 被部署为多个 Docker 容器,因此可以部署在任何支持 Docker 的 Linux 发行版 上。
服务端主机需要安装 Python、Docker 和 Docker Compose,像虚拟机中自带python的环境。

实验环境

准备俩台服务器,一台作为服务端主机,还有一台作为客户端,俩台主机必须要有docker的环境,其中服务端主机还需要docker compose

首先查看 Docker-Compose 版本判断安装是否成功
cp docker-compose /usr/local/bin/

docker-compose -v

1.下载 Harbor 安装程序

wget http:// harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz

tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

2. 配置 Harbor 参数文件

vim /usr/local/harbor/harbor.cfg

hostname = 20.0.0.32  在第五行修改

hostname:用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限 定的域名(FQDN)
例如 20.0.0.32hub.kgc.cn。不要使用 localhost127.0.0.1 为主机名。

3. 启动 Harbor

sh /usr/local/harbor/install.sh

4. 查看 Harbor 启动镜像

//查看镜像
docker images

REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
vmware/harbor-log           v1.2.2              36ef78ae27df        2 years ago         200MB
vmware/harbor-jobservice    v1.2.2              e2af366cba44        2 years ago         164MB
vmware/harbor-ui            v1.2.2              39efb472c253        2 years ago         178MB
vmware/harbor-adminserver   v1.2.2              c75963ec543f        2 years a
省略
。。。。。。。。
//查看容器
CONTAINER ID        IMAGE                              COMMAND                  CREATED              STATUS              PORTS                                                              NAMES
aee770c69872        vmware/nginx-photon:1.11.13        "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp   nginx
74e21da53cdd        vmware/harbor-jobservice:v1.2.2    "/harbor/harbor_jobs…"   About a minute ago   Up About a minute                                                                      harbor-jobservice
0a37b29881e9        vmware/harbor-ui:v1.2.2            "/harbor/harbor_ui"      About a minute ago   Up About a minute  
省略
。。。。。。

cd /usr/local/harbor/ 切到该目录下,因为之前解压就是解压到/usr/local 目录下
docker-compose ps 列出所有运行的容器

[root@node1 harbor]# ls
common                    docker-compose.notary.yml  harbor.cfg            LICENSE  upgrade
docker-compose            docker-compose.yml         harbor.v1.2.2.tar.gz  NOTICE
docker-compose.clair.yml  harbor_1_1_0_template      install.sh            prepa

[root@node1 harbor]#docker-compose ps
       Name                     Command               State                  Ports               
-------------------------------------------------------------------------------------------------
harbor-adminserver   /harbor/harbor_adminserver       Up                                         
harbor-db            docker-entrypoint.sh mysqld      Up      3306/tcp                           
harbor-jobservice    /harbor/harbor_jobservice        Up                                         
harbor-log           /bin/sh -c crond && rm -f  ...   Up      127.0.0.1:1514->514/tcp            
harbor-ui            /harbor/harbor_ui                Up                                         
nginx                nginx -g daemon off;             Up      0.0.0.0:443->443/tcp,              
                                                              0.0.0.0:4443->4443/t                                                 0.0.0.0:80->80/tcp
registry             /entrypoint.sh serve /etc/ ...   Up      5000/tcp      

如果一切都正常,应该可以打开浏览器访问 http://20.0.0.32 的管理页面,默认 的管理员用户名和密码是 admin/Harbor12345。

在这里插入图片描述
在这里插入图片描述

//添加项目并且填写项目名称

在这里插入图片描述
在这里插入图片描述

此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,
Register 服务器在端口 80 上侦听。

登录

docker login -u admin -p Harbor12345 http://127.0.0.1

下载镜像进行测试

docker pull nginx

镜像打标签

[root@node1 harbor]# docker tag nginx:latest 127.0.0.1/myyang-kgc/nginx
注释:为什么指向的ip是127.0.0.1,因为Harbor登录默认https加密登录的,但是linux登录默认是http所以只能用测试ip127.0.0.1,127.0.0.1是系统默认的本地安全的地址,等你上传镜像到私库时,它会自动给你转化为主机ip,因为你在harbor.cfg中修改了本地的ip,系统会自动识别。(如果你需要使用本地主机的话,那么需要在/usr/var/systemd/system/docker.service 中添加不安全的注册的ip主机,表示不安全的主机也可以正常登录)

上传镜像到Harbor

[root@node1 harbor]# docker push 127.0.0.1/myyang-kgc/nginx

在这里插入图片描述

以上操作都是在 Harbor 服务器本地操作。如果其他客户端上传镜像到 Harbor,就会报
如下错误。因为其他客户端并没有下载harbor的私有仓库,所有它没有办法把地址指向服务器端的127.0.0.1

登录到客户端

[root@client ~]# docker login  -u admin -p Harbor12345 http://20.0.0.32 发现始终无法登录(服务器端的ipWARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://20.0.0.32/: EOF

//解决:
[root@client ~]# vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 20.0.0.32 --containerd=/run/containerd/containerd.sock

[root@client ~]# systemctl daemon-reload   一定要先重启守护进程
[root@client ~]# systemctl restart docker  在重启docker
[root@client ~]# docker login  -u admin -p Harbor12345 http://20.0.0.32  现在就可以成功登录上了

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@client ~]# docker pull tomcat
[root@client ~]# docker images

[root@client ~]# docker tag tomcat 20.0.0.32/myproject-kgc/tomcat


[root@client ~]# docker push 20.0.0.32/myproject-kgc/tomcat

现在看到已经能上传成功了
在这里插入图片描述
然后批量删除镜像
docker ps -a | awk ‘{print “docker rm ”$1}’ | bash

[root@node2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE

下载镜像文件
[root@node2 ~]# docker pull 20.0.0.32/myyang-kgc/tomcat

下载完成之后你在web界面刷新下会显示下载次数
在这里插入图片描述

创建一个其他用户

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在客户端上操作

[root@node2 ~]# docker login -u lisi -p Harbor12345 http://20.0.0.32

为什么客户端指向的ip地址是服务端主机的地址。而不是之前服务端登录ip的地址127.0.0.1,那是因为服务器在harbor.cfg配置的文件中已经修改本地段的ip,服务器镜像上传成功后,会发现私有仓库默认的地址是服务器ip地址而不是本地测试地址,故客户端在登录时,要指向的ip是服务器ip而不是测试ip

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

移除 Harbor 服务容器同时保留镜像数据/数据库

  • Harbor服务器上操作

docker-compose down -v

如需重新部署,需要移除 Harbor 服务容器全部数据(该命令慎用)

  • 持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的
    /var/log/Harbor/目录下。

rm -rf /data/database/

rm -rf /data/registry/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值