部署Harbor服务,推送和拉取Docker镜像

  • 一、安装Harbor
  • 1、软件下载
  • 2、先将压缩包传到linux系统中
  • 3、使用命令将压缩包解压
  • 4、进入解压后的harbor目录下,修改harbor.yml
  • 5、修改完之后,启动harbor目录下的install.sh脚本,执行安装程序,程序会自动完成安装过程
  • 5、接着就可以浏览器访问harbor首页了
  • 二、测试向Harbor服务器推送和拉取docker镜像
  • 1、先在`Harbor`服务器上新建一个测试项目
  • 2、在`daemon.json`中加入`Harbor`地址
  • 3、准备一个测试镜像
  • 4、测试向`Harbor`中推送`candytomcat`镜像
  • 5、测试从`Harbor`服务下载`candytomcat`镜像


一、安装Harbor

1、软件下载

软件官网:https://github.com/goharbor/harbor/releases

我下载的是版本是1.10.6

2、先将压缩包传到linux系统中

3、使用命令将压缩包解压

tar -zxvf harbor-offline-installer-v1.10.6.tgz

4、进入解压后的harbor目录下,修改harbor.yml

hostname 192.168.1.100 # 修改主机名为当前系统的IP地址
# 下面两项看情况,没有端口冲突的话用默认的就行了
port: 5000 # 由于我80端口开了其他应用,防止有冲突,就换成了5000

需要将https下面的子配置全部注释掉,如下图

docker 拉取镜像 很大 docker镜像拉取策略_linux

不然会报如下错误,具体意思是,你需要上传你的证书用于https加密服务,使得更安全,可是你又没有上传,并且修改默认的证书路径,所以出错了。这里我们暂时就不用它了。

docker 拉取镜像 很大 docker镜像拉取策略_docker 拉取镜像 很大_02

5、修改完之后,启动harbor目录下的install.sh脚本,执行安装程序,程序会自动完成安装过程

./install.sh

如果安装过程中碰到因为其他错误而中断,可以参考这篇博客:

[](#8. 如果遇到报错:ERROR%3Aroot%3AError%3A The protocol is https but attribute ssl_cert is not set。 原因是harbor.yml中默认是配置https的端口及证书路径的。)

安装成功会打印如下信息:

docker 拉取镜像 很大 docker镜像拉取策略_linux_03

5、接着就可以浏览器访问harbor首页了

默认账号密码可以在harbor.yml中可以找到

docker 拉取镜像 很大 docker镜像拉取策略_docker 拉取镜像 很大_04

用户名是admin,密码是Harbor12345

登陆成功进入首页

二、测试向Harbor服务器推送和拉取docker镜像

1、先在Harbor服务器上新建一个测试项目

浏览器登录到Harbor主页,新建一个项目,填上项目名称,以项目名称为commons为例,存储数量和容量不设限制默认为-1,点确定。

docker 拉取镜像 很大 docker镜像拉取策略_linux_05

可以在列表中项目列表看到多了一个私有的项目commons,点击项目名称,

docker 拉取镜像 很大 docker镜像拉取策略_ubuntu_06

进入项目操作界面再点击镜像仓库

docker 拉取镜像 很大 docker镜像拉取策略_docker 拉取镜像 很大_07

最后边有推送镜像的模板,可以复制下来参考

docker 拉取镜像 很大 docker镜像拉取策略_docker_08

2、在daemon.json中加入Harbor地址

为了更好的测试效果推送的效果,我这边重新开了另外一台虚拟机,预装了dockerdocker-compose

修改/etc/docker/daemon.json文件,加入Harbor地址,让docker能找到它,内容如下:

{
  "registry-mirrors": ["https://43h8ayp0.mirror.aliyuncs.com"],
  "insecure-registries": ["192.168.1.100:5000"]
}

重启docker,并验证配置是否生效

systemctl restart docker  //重启docker
docker info

如果可以看到刚才配置的内容即生效

docker 拉取镜像 很大 docker镜像拉取策略_docker 拉取镜像 很大_09

3、准备一个测试镜像

基于官方tomcat制作一个属于我自己特色的镜像candytomcat,用于后面测试推送到Harbor服务器

构建镜像Dockerfile内容如下:

FROM tomcat
# 让tomcat的首页显示“Hello Harbor”字样
RUN echo "Hello Harbor" > /usr/local/tomcat/webapps/ROOT/index.jsp

构建tomcat镜像

docker build -t candytomcat .

运行刚才构建的镜像

docker run -p 8888:8080 candytomcat -d

测试镜像运行成功,浏览器中也能打印出预期的值

docker 拉取镜像 很大 docker镜像拉取策略_docker 拉取镜像 很大_10

docker 拉取镜像 很大 docker镜像拉取策略_docker_11

参考刚才在Harbor服务器中的指令为当前构建的candytomcat镜像打个标记

docker tag candytomcat:latest 192.168.1.100:5000/commons/candytomcat:latest

查看Docker镜像列表

docker images

可以看到多了一个符合Harbor服务器命名格式的镜像,到此用于测试的镜像搞定了

docker 拉取镜像 很大 docker镜像拉取策略_微服务_12

4、测试向Harbor中推送candytomcat镜像

由于刚才创建的commons项目是私有的,所以在上传前还需要进行用户登录,这里使用命令直接登录

docker login 192.168.1.100:5000 -u admin -p Harbor12345

192.168.1.100:5000/commons/candytomcat:latest 镜像上传到Harbor服务器

docker push 192.168.1.100:5000/commons/candytomcat:latest

如图上传成功

docker 拉取镜像 很大 docker镜像拉取策略_linux_13

Harbor服务器上也可以看到这个镜像的信息

docker 拉取镜像 很大 docker镜像拉取策略_linux_14

5、测试从Harbor服务下载candytomcat镜像

为了更好的测试效果拉取镜像的效果,再切换一台虚拟机

首先还是先修改/etc/docker/daemon.json文件,加入Harbor地址,内容如下:

{
  "registry-mirrors": ["https://43h8ayp0.mirror.aliyuncs.com"],
  "insecure-registries": ["192.168.1.100:5000"]
}

拉取镜像前先进行用户登录

docker login 192.168.1.100:5000 -u admin -p Harbor12345

拉取 192.168.1.100:5000/commons/candytomcat:latest 镜像

docker pull 192.168.1.100:5000/commons/candytomcat:latest

拉取成功

docker 拉取镜像 很大 docker镜像拉取策略_微服务_15