购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 使用Harbor搭建私有仓库

【必知必会】使用Harbor搭建私有仓库。

本实验在一台新的机器vms102上操作,在vms102上安装Docker。

Harbor是一个通过Web界面管理的镜像仓库,使用起来非常方便且功能强大。安装Harbor需要Compose,Compose是一种容器编排工具,所以需要先把docker-compose安装好。

2.2.1 安装Compose

本实验准备在vms102上搭建Harbor,所以下面的操作在vms102上进行。

第1步 使用yum安装docker-compose。

第2步 查看Compose的版本。

2.2.2 安装Harbor

因为私有仓库拉取镜像默认使用的是HTTPS,为了能让Docker通过HTTP访问,必须修改相关配置。

第1步 在vms102上创建/etc/docker/daemon.json,内容如下。

这里insecure-registries后面的地址是仓库的地址,重启Docker。

第2步 到https://github.com/goharbor/harbor/releases下载最新版Harbor离线包并解压,解压之后进入目录harbor。

第3步 导入Harbor所需要的镜像。

第4步 生成harbor.yml文件。

编辑harbor.yml文件,修改hostname的值为本主机名,最前面的数字是行号。

把以下几行注释掉。可以在代码前加上“#”,此时加“#”的代码就会被注释掉,不再生效。

注意

前面的数字是所在行号,行号后面的#是新增的。

harbor_admin_password是登录Harbor的密码,大概在34行,这里默认为Harbor12345,可以在此处修改管理员密码。

第5步 运行脚本./prepare,执行一些准备工作。

第6步 运行./install.sh。

安装完成,下面开始访问Harbor。

第7步 在浏览器里输入192.168.26.102,进入图2-3所示的界面。

图2-3 登录Harbor

用户名输入admin,密码输入Harbor12345,单击“登录”按钮,如图2-4所示。

图2-4 Harbor的界面

注意

单击界面左下角的“浅色主题”,整个面板的颜色以浅色显示。

第8步 依次单击“系统管理”→“用户管理”→“创建用户”选项,如图2-5所示。

设置新创建用户的信息,单击“确定”按钮。

第9步 依次单击“项目”→“新建项目”选项,如图2-6所示。

图2-5 创建用户

图2-6 创建项目

项目名称输入cka,访问级别选择公开。这里的访问级别指的是别人从这个项目里拉取镜像时要不要先登录,如果选择了公开,则不需要登录就可以直接拉取;如果没有选择公开,则必须在命令行里登录之后才能拉取。不管有没有选择公开,往此仓库里推送镜像都是需要登录的,单击“确定”按钮。

第10步 为项目添加用户。

依次单击“项目”→“cka”选项,如图2-7所示。

图2-7 进入cka项目

依次单击“成员”→“+用户”选项,如图2-8和图2-9所示。

图2-8 为项目关联用户

名称输入tom,角色选择项目管理员,单击“确定”按钮。

单击“镜像仓库”选项,可以看到没有任何镜像,如图2-10所示。

图2-9 把tom设置为项目管理员

图2-10 查看项目里的镜像

2.2.3 推送镜像

下面在客户端vms100上把做好的镜像推送到仓库里,不管Harbor里的cka项目是不是设置了公开,推送镜像都要先登录。

第1步 修改/etc/docker/daemon.json,如下所示。

这里新增加insecure-registries,后面的地址是仓库的地址,要记得在registry-mirrors最后添加一个逗号。

第2步 重启Docker。

第3步 登录私有仓库。

按提示输入刚创建的用户名和密码,登录成功后会在当前目录下生成一个隐藏文件夹.docker,里面记录了登录信息。

这个config.json文件里就记录的登录信息。

第4步 测试推送镜像。

在推送镜像之前,需要给镜像重新打标签,新的tag里的IP是仓库的IP,分类就是Harbor里的项目。比如我们现在的环境里,需要把镜像重新打标签为192.168.26.102/cka/镜像名:tag这样的格式。

先把centos:v1重新打标签为192.168.26.102/cka/centos:v1。

然后通过docker push命令推送到仓库里。

第5步 打开Harbor管理页面,如图2-11所示。

图2-11 查看项目里的镜像

单击“cka/centos”选项之后,再单击图2-12箭头所指位置的选项。

图2-12 单击箭头所指位置的选项

之后进入图2-13所示的界面,单击箭头所指位置的按钮,即可自动复制拉取此镜像的命令。

图2-13 单击箭头所指位置的按钮

2.2.4 拉取镜像

如果是在其他的Docker机器上拉取镜像,需要在/etc/docker/daemon.json里添加"insecure-registries": ["192.168.26.102"],这里insecure-registries后面的值是仓库的IP,具体配置与前面一样。下面来看如何在Containerd的环境里下载,下面的操作是在vms101上进行的。

首先使用crictl拉取镜像192.168.26.102/cka/centos:v1。

这里拉取失败,是因为vms101与Harbor服务器192.168.26.102之间使用了HTTPS的方式通信。我们现在修改一下Containerd的配置文件/etc/containerd/config.toml,用Vim编辑器打开此文件后搜索关键字mirror,找到之后,原来的内容如下。

修改之后的内容如下。

上面的粗体字部分是新增的,重启Containerd。

然后再次拉取镜像。

可以看到,现在可以正常拉取镜像了。

下面尝试使用nerdctl拉取镜像。

这里提示的也是因为HTTPS的问题,导致无法拉取镜像。但是,前面已经修改了/etc/containerd/config.toml,为什么还不行呢?原来是因为nerctl不使用这个配置文件,所以在此配置文件里所做的修改对nerdctl不生效。如果想使用nerdctl拉取镜像,可以加上--insecure-registry选项。

使用nerdctl再次拉取镜像。

可以看到,现在可以正常拉取镜像了。 oXCyhjK2Wp1rlpSdGEbAZXluoKJj7yuAi6TpnkMLMSg56cbZbZuJ15XsLeXbo6LX

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开