CentOS部署Harbor镜像仓库
关于Harbor
Harbor是用于存储和分发Docker镜像的镜像仓库服务,相比Docker Registry,Harbor在安全、标识、管理等方面做了增强,更适合企业使用;
环境信息
今天要部署的Harbor版本是1.9.0,本次部署用的机器信息如下:
- 操作系统:CentOS Linux release 7.7.1908
- Docker:19.03.2
- docker-compose:1.23.2
部署Harbor
Harbor官方提供了在线和离线两种安装方式,考虑到企业服务器有可能无法访问外网,因此选择离线安装更加实用;
- 打开Harbor的GitHub仓库的release页面下载离线安装包,地址是:https://github.com/goharbor/harbor/releases ,如下图红框所示,我选择了最新版的1.9.0:

- 将离线安装包harbor-offline-installer-v1.9.0.tgz下载到电脑上,执行以下命令解压:
tar -zxvf harbor-offline-installer-v1.9.0.tgz
解压的结果是个名为harbor的文件夹,进入该文件夹;
- 修改配置文件harbor.yml,主要是修改以下两个配置:
a. hostname:填写本机的IP地址或者hostname,如果已经和域名绑定了也可以填域名;
b. harbor_admin_password:管理员初始密码;
更多配置例如https、存储等,请参考官方文档按需设置; - 开始安装,在install.sh文件所在目录执行命令./install.sh即可安装Harbor,部署成功的控制台信息如下:
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating registryctl ... done
Creating registry ... done
Creating harbor-db ... done
Creating redis ... done
Creating harbor-portal ... 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://192.168.50.167.
For more details, please visit https://github.com/goharbor/harbor .
- 此时应该有九个容器正常运行:
[root@vostro ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dac02ab21a1f goharbor/harbor-jobservice:v1.9.0 "/harbor/harbor_jobs…" 3 hours ago Up 3 hours (healthy) harbor-jobservice
998fa5676a08 goharbor/nginx-photon:v1.9.0 "nginx -g 'daemon of…" 3 hours ago Up 3 hours (healthy) 0.0.0.0:80->8080/tcp nginx
bc87d9a5a7f7 goharbor/harbor-core:v1.9.0 "/harbor/harbor_core" 3 hours ago Up 3 hours (healthy) harbor-core
ce495560ef35 goharbor/harbor-db:v1.9.0 "/docker-entrypoint.…" 3 hours ago Up 3 hours (healthy) 5432/tcp harbor-db
25a13fddd607 goharbor/harbor-portal:v1.9.0 "nginx -g 'daemon of…" 3 hours ago Up 3 hours (healthy) 8080/tcp harbor-portal
b9f72d4da022 goharbor/redis-photon:v1.9.0 "redis-server /etc/r…" 3 hours ago Up 3 hours (healthy) 6379/tcp redis
3804003153ae goharbor/harbor-registryctl:v1.9.0 "/harbor/start.sh" 3 hours ago Up 3 hours (healthy) registryctl
d8d570e88874 goharbor/registry-photon:v2.7.1-patch-2819-v1.9.0 "/entrypoint.sh /etc…" 3 hours ago Up 3 hours (healthy) 5000/tcp registry
2d940d7fd271 goharbor/harbor-log:v1.9.0 "/bin/sh -c /usr/loc…" 3 hours ago Up 3 hours (healthy) 127.0.0.1:1514->10514/tcp harbor-log
- 由于Harbor的web服务使用了宿主机的80端口,所以在浏览器直接输入宿主机的IP地址即可访问Harbor的web管理页面,账号是admin,密码是前面设置的harbor_admin_password的值(默认是Harbor12345):

- 登录成功后发现空空如也,也是,目前还没啥东西:

允许http连接
接下来我们要验证Harbor服务是否可用,验证方式是从另一台Linux电脑(下面称之为A电脑)远程推送镜像到Harbor机器;
Harbor默认是不允许http连接的,这里可以修改设置来支持http连接,以便后续的验证操作;
- 如果要从A电脑连接Harbor服务器,那么要对A电脑做设置,这里A电脑是Linux操作系统;
- 编辑A电脑的/etc/docker/daemon.json文件(如果不存在就新建),增加以下内容,192.168.50.167是Harbor服务器的IP地址:
{
"insecure-registries":["192.168.50.167"]
}
- 重启使配置生效:
systemctl daemon-reload && systemctl restart docker
再次提醒:这里修改是远程连接Harbor服务的机器的配置,而不是Harbor服务器的配置;
推送镜像到Harbor
接下来验证Harbor的服务,在A电脑上尝试将本机的镜像推送到Harbor;
- 登录A电脑,选个本地镜像用来测试,我这里有个名为jenkinsci/blueocean:1.19.0的本地镜像,ID为11e2757c8bc1:
root@hedy:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkinsci/blueocean 1.19.0 11e2757c8bc1 7 days ago 553MB
- 执行以下命令,将选定的本地镜像修改名称和TAG:
docker tag 11e2757c8bc1 192.168.50.167/library/jenkinsci/blueocean:1.19.0
上述命令中,192.168.50.167是安装harbor的时候,harbor.yml文件中配置的hostname的值,library是harbor默认的项目名称;
3. 执行以下命令即可从A电脑登录Harbor:
docker login 192.168.50.167 -u admin -p Harbor12345
- 执行命令docker push 192.168.50.167/library/jenkinsci/blueocean:1.19.0
root@hedy:~# docker push 192.168.50.167/library/jenkinsci/blueocean:1.19.0
The push refers to repository [192.168.50.167/library/jenkinsci/blueocean]
2963284ab4ce: Pushing [================================================> ] 58.27MB/60.25MB
c4a4de444fad: Pushing [========> ] 47.87MB/267.6MB
850b4f512dc8: Pushed
abdaf43f94b6: Pushed
a6a27b82134d: Pushed
d6bee87a74b8: Pushed
28c6bdb5fda9: Pushed
bb25d1c7cc8a: Pushed
e2419390abaa: Pushing [========================> ] 37.29MB/77.36MB
d6982687f77e: Pushed
c9659702491d: Pushed
ed4e100c24a1: Pushing [==========================================> ] 36.71MB/43.37MB
ceaf9e1ebef5: Pushing [======> ] 12.58MB/99.29MB
9b9b7f3d56a0: Waiting
f1b5933fe4b5: Waiting
- 上传完毕,登录Harbor网页,可以看到新上传的镜像:

至此,实战完毕,在您搭建Harbor服务的时候希望本文能给您一些参考。
CentOS部署Harbor镜像仓库的更多相关文章
- 离线手动部署docker镜像仓库——harbor仓库(HTTPS)
实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...
- harbor镜像仓库-01-搭建部署
harbor镜像仓库-01-搭建部署 dockerregistryharbor安装部署docker-compose harbor的https配置参考另一章节harbor镜像仓库-02-https访问配 ...
- [Docker]Harbor部署私有镜像仓库
Harbor部署私有镜像仓库 认识: Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器. 部署环境: CentOS7 Python2.7.5 Docker CE ...
- 部署docker镜像仓库及高可用
下载地址: https://github.com/goharbor/harbor/releases 安装harbor服务器: 安装harbor root@harbor-vm1:/usr/loc ...
- harbor镜像仓库-02-https访问配置
harbor镜像仓库-02-https访问配置 harbordockerhttps harbor搭建部署参考上一章节 harbor镜像仓库-01-搭建部署 Harbor默认使用http,给harbor ...
- 部署 harbor 私有仓库
安装下载依赖包 安装docker-compose 从 docker compose 发布页面下载最新的 docker-compose 二进制文件,本文以1.25.4为例 cd /opt/k8s/wor ...
- Harbor镜像仓库
Harbor镜像仓库 作者 刘畅 时间 2020-7-11 微信 目录 1.下载离线安装包 1 2.安装docker 1 3.安装docker-compose 2 4.自签TLS证书 2 4.1.创建 ...
- Docker------阿里云部署私有镜像仓库
Docker------阿里云部署私有镜像仓库 前言 公共镜像仓库 官方:https://hub.docker.com/ 基于各个软件开发或者软件提供方开发的 非官方:其它组织或公司开发的镜像,供 ...
- Docker_部署本地镜像仓库(6)
在部署本地镜像仓库之前,需要在主机上安装Docker.本地镜像仓库是registry镜像的一个实例,在Docker中运行. 1.创建本地镜像仓库服务 $ docker run -d -p 4000:5 ...
随机推荐
- Flink 源码解析 —— Standalone session 模式启动流程
Standalone session 模式启动流程 https://t.zsxq.com/EemAEIi 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0 ...
- 一个有趣的 5 X 5 方阵一笔画问题
这个问题是在我上小学时同学告诉我的,当时觉得好玩,就随便瞎画这玩儿,不过从小学到大学,没有一次画成功过.这个问题起初同学告诉我的时候,图不是这样画的,我只是为了好表达,将问题抽象成网格了,原问题是 ...
- 神经网络优化算法:Dropout、梯度消失/爆炸、Adam优化算法,一篇就够了!
1. 训练误差和泛化误差 机器学习模型在训练数据集和测试数据集上的表现.如果你改变过实验中的模型结构或者超参数,你也许发现了:当模型在训练数据集上更准确时,它在测试数据集上却不⼀定更准确.这是为什么呢 ...
- SpringBoot进阶教程(六十)intellij idea project下建多个module搭建架构(上)
在 IntelliJ IDEA 中,没有类似于 Eclipse 工作空间(Workspace)的概念,而是提出了Project和Module这两个概念.多module有一个父maven工程,多个子工程 ...
- Mybatis框架(9)---Mybatis自定义插件生成雪花ID做为表主键项目
Mybatis自定义插件生成雪花ID做为主键项目 先附上项目项目GitHub地址 spring-boot-mybatis-interceptor 有关Mybatis雪花ID主键插件前面写了两篇博客作为 ...
- SpringBoot Mybatis解决使用PageHelper一对多分页问题
一般来说使用 PageHelper 能解决绝大多数的分页问题,相关使用可在博客园上搜索,能找到很多资料. 之前我在做SpringBoot 项目时遇到这样一个问题,就是当一对多联合查询时需要分页的情况下 ...
- Unity之SDK接入(OPPO)
简介:首先介绍一下,为什么博主要选择OPPO的SDK接入呢,因为OPPO的SDK接入是目前博主发现最简单的SDK.所以,博主选择OPPO,带领大家接SDK从入门到精通 工作准备: 1.环境配置(SDK ...
- 栅格数据的批量镶嵌(附Python脚本)
栅格数据的批量镶嵌(附Python脚本) 博客小序:在数据处理的过程中,会遇到需要大量镶嵌的情况,当数据较多时手动镶嵌较为麻烦,自己最近对分省的DEM数据进行镶嵌,由于利用python进行镶嵌较为方便 ...
- Delphi - 本地路径的创建、清空本地指定文件夹下的文件
本地路径的创建 在做下载操作时,我们一般先把文件下载到本地指定的路径下,然后再做其他使用. 为了防止程序出现异常,我们通常需要先判断本地是否存在指定的路径. 以C盘Tmp文件夹为例,我们可以这样做,代 ...
- Git 忽略某些文件提交
在项目中有些配置文件不需要提交,但是有同学在后面开发中发现在.igonore文件中无论如何都无法忽略某些文件的提交.原因在这里: 已经维护起来的文件,即使加上了gitignore,也无济于事.---- ...