harbor镜像仓库的安装与使用

Posted 张侦毅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了harbor镜像仓库的安装与使用相关的知识,希望对你有一定的参考价值。

文章目录

harbor

什么是harbor

  harbordocker的镜像仓库,通过可视化的界面使我们能够更轻易的维护众多的docker镜像。

为什么要使用harbor

  在现在的项目开发中,越来越多的用到了微服务架构,而微服务架构是与docker紧密相关的,也就是说,在我们谈论微服务时,其实我们不可避免的就会谈到docker,而由于微服务的众多(通过将单个复杂的单体项目拆分成的众多微服务),加之产品迭代的时间漫长,因而我们不可避免的就需要维护众多的docker微服务镜像版本,在面对如此众多的docker镜像版本时,我们迫切的需要使用一种基于可视化的界面来操作,维护众多的版本信息,因而我们就不可避免的会使用到镜像仓库——harbor

  另外一个使用harbor的原因是,由于绝大部分的镜像都很大,少则上百兆(比如说openjdk:8,有的是500M),多则超过一个G都是有可能的。而默认的,docker仓库地址为国外服务器,因而在我们拉取基础镜像时,往往会受制于网络限制,导致拉取缓慢亦或是拉取失败的情况,从这方面来说,我们也应该搭建属于自己的harbor镜像仓库。

软件安装

软件与环境

  • 操作系统

  CentOS-7

  • harbor版本

  harbor-offline-installer-v1.9.1.tgz

  • 下载地址

  https://github.com/goharbor/harbor/releases

安装软件

解压缩软件压缩包

  解压缩下载的软件压缩包

[root@master ~]# tar -xvf harbor-offline-installer-v1.9.1.tgz 
harbor/harbor.v1.9.1.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/harbor.yml

修改配置文件

  进入harbor文件夹,在这里我们可以看到harbor的配置文件harbor.yml,编辑该配置文件。

  在harbor的配置文件harbor.yml中,我们一般需要修改的地方主要有以下几点:

hostname: reg.mydomain.com
http:
	port: 80
harbor_admin_password: Harbor12345
data_volume: /data

  其中hostname表示的是本机的域名,port表示本机的端口号,harbor_admin_password表示的是harbor默认的登陆密码,data_volume表示的是harbor数据的挂载点。

  我们可以根据自己的情况进行修改,比如说我的修改结果如下:

hostname: hub.lyc.com
http:
	port: 10010
harbor_admin_password: Harbor12345
data_volume: /usr/dev/harbor

修改本机的域名

  由于在harbor的配置文件中含有域名,而该域名我们又修改了,所以说我们也得需要修改本机的域名,其域名配置文件所在位置如下:

/etc/hosts

  在其中添加自己的域名:

127.0.0.1   hub.lyc.com

  测试自己域名的配置是否正确

[root@master harbor]# ping hub.lyc.com
PING hub.lyc.com (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.026 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.038 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.090 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.090 ms
...

  当我们看到上述结果时,这就说明我们的域名其实是已经配置正确了。

安装软件

  执行harbor文件夹中的脚本(注意,一定要确保本机的docker已处于启动状态,否则无法执行安装操作!!!

./install.sh 

  当我们看到如下结果时,这就说明我们的harbor已经安装完成。

[Step 3]: starting Harbor ...
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating registry      ... done
Creating harbor-portal ... done
Creating redis         ... done
Creating harbor-db     ... done
Creating registryctl   ... done
Creating harbor-core   ... done
Creating nginx             ... done
Creating harbor-jobservice ... done

✔ ----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at http://hub.lyc.com. 
For more details, please visit https://github.com/goharbor/harbor .

访问harbor

  访问harbor的格式如下:

[IP地址]:[端口号]

  比如说我的harbor访问地址如下:

http://192.168.238.128:10010

  其展示的界面如下:


  harbor默认的账号为admin,密码就是我们所修改的密码,当然,这里由于我本身并没有修改密码,因而此处我的密码仍然是Harbor12345

  登陆我们刚才的账户,此时我们就可以看到起主界面,如下:

推送镜像文件到harbor镜像仓库

给镜像添加harbor格式tag

  在harbor镜像仓库搭建完成后,接下来就是上传我们的镜像了。

  这里我选择我们最常使用的openjdk:8镜像,以此来演示镜像上传操作。

  首先就是先确保我们的docker中已经下载了openjdk:8镜像,如下:

[root@master harbor]# docker images | grep openjdk
openjdk                         8                               27da2af61908        3 months ago        488MB

  harbor格式的镜像tag名称格式如下:

[harbor域名]:[harbor端口号]/[仓库名称]/[镜像名称]:[镜像tag]

  比如说我的openjdk:8对应的harbor镜像名称为:

hub.lyc.com:10010/os/openjdk:8

  其对应的tag标签生成指令如下

docker tag openjdk:8 hub.lyc.com:10010/os/openjdk:8

使用docker登陆harbor

  为了将新打的tag镜像推送到镜像仓库,我们首先得使用docker登陆harbor

  docker登陆harbor的格式如下:

docker login [harbor域名]:[harbor端口号]

  比如说我的登陆方式为:

docker login hub.lyc.com:10010

  其登陆后的结果如下:

[root@master harbor]# docker login hub.lyc.com:10010
Username: admin
Password: 
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配置文件中。

  docker配置文件地址如下:

/etc/docker/daemon.json 

  在该配置文件中,我们需要添加如下信息:

"insecure-registries": ["hub.lyc.com:10010"]

  对应的我的添加信息如下:

[root@localhost ~]# cat /etc/docker/daemon.json 

  "registry-mirrors": ["https://3exwebwf.mirror.aliyuncs.com"],
  "data-root":"/data/docker",
  "insecure-registries": ["hub.lyc.com:10010"]

  当我们添加完成后,我们需要执行docker的重启操作

systemctl stop dokcer
systemctl start docker

  当完成上述信息后,以后我们再向harbor推送镜像时,我们就不需要再次登录了。

创建镜像仓库

  在向镜像仓库推送镜像前,我们首先得创建一个镜像仓库,就像我们的新镜像名

hub.lyc.com:10010/os/openjdk:8

  中展示的一样,创建名为os的镜像仓库。

  镜像仓库的创建方式如下,在harbor的主界面中,点击【新建项目】按钮。

  在弹出的对话框中,输入os,然后点击【确定】按钮。

  创建的镜像仓库如下:

向harbor中推送镜像

  在进行了前面的操作后,最后的镜像推送操作就变得非常简单了,如下:

[root@master ~]# docker push hub.lyc.com:10010/os/openjdk:8
The push refers to repository [hub.lyc.com:10010/os/openjdk]
b575bb71cbb6: Pushed 
7955da51da82: Pushed 
c64652873162: Pushed 
a4e797bc3f15: Pushed 
392f356944ff: Pushed 
15210a41d4ee: Pushed 
e2a8a00a83b2: Pushed 
8: digest: sha256:312e104c404dad2e9dca98d4f949b224611f7f1a1de983314273a4a03fda13bd size: 1795

  在harbor的镜像仓库中,我们就可以看到推送的结果了,如下:

以上是关于harbor镜像仓库的安装与使用的主要内容,如果未能解决你的问题,请参考以下文章

Docker镜像仓库Harbor安装与配置

Linux运维容器篇 docker私有仓库harbor生产搭建

Linux运维容器篇 docker私有仓库harbor生产搭建

Linux运维容器篇 docker私有仓库harbor生产搭建

Linux运维容器篇 docker私有仓库harbor生产搭建

harbor镜像仓库原理和安装