跳到主要内容

实战-使用harbor搭建Docker私有仓库-v1.5.0-2022.6.24

实战:使用harbor搭建Docker私有仓库(v1.5.0)-2022.6.24

目录

[TOC]

实验环境

1台centos7.x虚机。
docker version:20.10.6(附近版本都可以)
harbor版本: v1.5.0-d59c257e
用途主机名ip系统版本备注
作为harbor使用harbor172.29.9.10centos7.7 1908使用高配版虚拟机;
注意:安装 harbor,系统根分区的可用空间需要大于 6G,否则安装时会报空间不足。内存 2G 以上。

实验软件

链接:https://pan.baidu.com/s/1RHOBb_BnO4RLXFNRJ6R47w?pwd=k0r0

提取码:k0r0

2022.2.28-使用harbor搭建Docker私有仓库-实验软件

前言

1.harbor介绍

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然 Docker 官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的 Registry 也是非常必要的。

Harbor是由VMWare公司开源的容器镜像仓库。事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等,足以满足基本企业需求。

官方:https://goharbor.io/

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

harbor ['hɑ:bə] 海湾 n.

2.docker-compose项目介绍

docker-compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。Docker-Compose 的工程配置文件默认为 docker-compose.yml,Docker-Compose 运行目录下的必要有一个 docker-compose.yml,docker-compose 可以管理多个 docker 实例。

先决条件

服务器硬件配置:

• 最低要求:CPU2核/内存4G/硬盘40GB

• 推荐:CPU4核/内存8G/硬盘160GB

软件:

• Docker CE 17.06版本+

• Docker Compose 1.18版本+ (harbor就是采用这种方式去管理里面的一些服务的)

Harbor安装有2种方式:

• 在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小

• 离线安装:安装包包含部署的相关镜像,因此安装包比较大

0、基础环境配置(Linux基础配置+docker安装+主机名配置)

和之前配置一样,这里快速用脚本跑一下即可。

1、基础环境配置脚本

(1)关闭且禁用如下服务:firewalld、NetworkManager、selinux 
systemctl stop firewalld && systemctl disable firewalld && systemctl stop NetworkManager && systemctl disable NetworkManager
setenforce 0
sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config

(2)配置网络yum源:
cd /etc/yum.repos.d/
mkdir backup-`date +%F`
mv * !$

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache

yum install -y net-tools
yum install -y vim
yum install -y wget
yum install -y lrzsz

(3)配置主机名(对相应的机器配置主机名)
hostnamectl --static set-hostname harbor
exec bash

2、安装docker脚本

#安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2

#配置国内 docker 的 yum 源
yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/Centos/docker-ce.repo
yum makecache

#安装 docker-ce
yum install docker-ce docker-ce-cli containerd.io -y

#启动并开机自启docker服务
systemctl start docker && systemctl enable docker

#查看docker版本
docker version
docker info

#配置docker镜像地址
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":["https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

#开启网络转发功能
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
cat /proc/sys/net/ipv4/ip_forward

基础环境配置完成后,对上述配置进行验证,确保符合要求。

验证全部符合要求后,对虚机做一个init-success快照。

1、安装 docker-compose

参考文档:https://docs.docker.com/compose/install/#install-compose-on-linux-systems

方法1:在线安装

curl -L 
https://github.com/docker/compose/releases/download/1.26.2/docker-compose-`uname
-s`-`uname -m` > /usr/local/bin/docker-compose

#添加执行权限
chmod +x /usr/local/bin/docker-compose

方法2:离线安装(本次安装方式)

github 地址:https://github.com/docker/compose/releases/

下载二进制文件上传至 linux(课程资料已提供 docker-compose 二进制文件可直接上传)

[root@harbor ~]# rz
[root@harbor ~]# ll -h docker-compose-Linux-x86_64
-r-------- 1 root root 12M 724 2020 docker-compose-Linux-x86_64

[root@harbor ~]# mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
[root@harbor ~]# chmod +x /usr/local/bin/docker-compose #添加执行权限

方法3:使用python 的pip安装docker-compose

  • 安装epel源
[root@harbor ~]# yum install -y epel-release
  • 安装并升级pip
[root@harbor ~]# yum install -y python-pip
[root@harbor ~]# pip install --upgrade pip
  • 使用pip安装docker-compose
[root@harbor ~]# pip install -U -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose

2、安装 Harbor 私有仓库

1.下载 Harbor 安装文件

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

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

注:此文件有 800M 左右大小,建议大家提前下载好后,上传到 linux 系统上。

[root@harbor ~]# rz
[root@harbor ~]# ll -h harbor-offline-installer-v1.5.0.tgz
-r-------- 1 root root 824M 211 2019 harbor-offline-installer-v1.5.0.tgz
[root@harbor ~]# tar xf harbor-offline-installer-v1.5.0.tgz -C /opt/

2.配置 Harbor

[root@harbor ~]# vim /opt/harbor/harbor.cfg #查看配置文件中的基本信息
# 修改点1:hostname 设置访问地址,可以使用 ip、域名,不可以设置为 127.0.0.1 或 localhost
改: 7 hostname = reg.mydomain.com
为: 7 hostname = 172.29.9.10

# 修改点2:启动 Harbor 后,管理员 UI 登录的密码,默认是 Harbor12345,改为 123456
改:68 harbor_admin_password = Harbor12345
为:68 harbor_admin_password = 123456


# 修改点3:注释https相关信息
#https:
# https port for harbor, default is 443
# port: 443
# The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path

修改完成后,保存退出。

问题来了:如果修改完其配置文件后,该如何生效呢?

个人感觉可以重启下harbor服务即可(docker-compose stop/start)

3、启动Harbor

1.确认上述配置没有问题后,进行启动harbor

[root@harbor ~]# cd /opt/harbor/
[root@harbor harbor]# ./prepare #初始化安装环境

2.开始安装 harbor

[root@harbor harbor]# ./install.sh #执行./install.sh,Harbor 服务就会根据当期目录下的/opt/harbor/docker-compose.yml 开始下载依赖的镜像,检测并按照顺序依次启动各个服务。最终弹出以下画面,说明安装成功了。

#这里耐心等待一会儿就好!

3.查看 Harbor 依赖的镜像及启动服务如下

查看镜像:

[root@harbor harbor]#docker-compose ps #用这个命令查看启动的服务
Name Command State Ports
--------------------------------------------------------------------------------------------------------------------------------------
harbor-adminserver /harbor/start.sh Up (health: starting)
harbor-db /usr/local/bin/docker-entr ... Up (health: starting) 3306/tcp
harbor-jobservice /harbor/start.sh Up
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-ui /harbor/start.sh Up (health: starting)
nginx nginx -g daemon off; Up (health: starting) 0.0.0.0:443->443/tcp,:::443->443/tcp,
0.0.0.0:4443->4443/tcp,:::4443->4443/tcp,
0.0.0.0:80->80/tcp,:::80->80/tcp
redis docker-entrypoint.sh redis ... Up 6379/tcp
registry /entrypoint.sh serve /etc/ ... Up (health: starting) 5000/tcp

4.配置开机自启

  • 参考方法:

  • 自己实际配置代码如下:

设置开机启动:

[root@harbor ~]#vim /etc/rc.local
/usr/local/bin/docker-compose -f /opt/harbor/docker-compose.yml up -d

设置权限:

[root@harbor ~]#chmod +x /etc/rc.local /etc/rc.d/rc.local

4、使用 harbor 管理镜像

登录 http://172.29.9.10/harbor/sign-in 用户:admin 密码:Harbor12345

5、新建一个仓库项目

我们新建一个名称为 xuegod-web 的项目,设置公开。

注意:当项目设为公开后,任何人都有此项目下镜像的读权限。命令行用户不需要“docker login”就可以拉取此项目下的镜像。

6、修改本地 docker 服务使用 http 协议和私有仓库通信

这个是在docker客户端进行配置的,而不是在harbor机器上配置。

#配置可信任(如果仓库是HTTPS访问不用配置)
#在 daemon.json 中添加以下参数
[root@harbor ~]# vim /etc/docker/daemon.json #创建此文件,并写入以下内容
{
"insecure-registries": ["172.29.9.10"]
}

#重启docker 服务
[root@harbor ~]# systemctl daemon-reload && systemctl restart docker

注:出现这问题的原因是:Docker 自从 1.3.X 之后 docker registry 交互默认使用的是 HTTPS但是搭建私有镜像默认使用的是 HTTP 服务,所以需要加上这一行。 不然 docker 没有办法往私有仓库中上传镜像,并且docker也没办法从是私有仓库拉取镜像,即docker login 私有仓库地址是会报错的。

注意:如下json格式的写法

注意:如果harbor那里有端口号,这里也是要添加端口号的

7、重启harbor服务,登录harbor仓库

注意:这里是把harbor机器当docker主机来进行测试使用的;

之前重启 docker 服务时,把 harhor 服务也关了,所以需要再启动一下 harbor

你可以使用 docker-compose 来启动或关闭 Harbor 服务。但必须在与 docker-compose.yml 相

同的目录中运行。 compose [kəmˈpəʊz] 组成

[root@harbor harbor]# docker-compose stop
[root@harbor harbor]# docker-compose start
  • 登录私有仓库
[root@harbor harbor]# docker login 172.29.9.10

8、上传镜像到私有仓库中

1.查看当前本地镜像

2.admin 登录harbor

[root@harbor harbor]# docker login 172.29.9.10

3.给本地镜像打 tag

tag 的名称,可以在 web 界面这里查看到。

#举例
docker tag SOURCE_IMAGE[:TAG] 172.29.9.10/xuegod-web/IMAGE[:TAG]
docker push 172.29.9.10/xuegod-web/IMAGE[:TAG]
#实际打的tag
[root@harbor harbor]# docker tag vmware/redis-photon:v1.5.0 172.29.9.10/xuegod-web/vmware/redis-photon:v1.5.0

4.将打好tag的本地镜像push到仓库

[root@harbor harbor]# docker push 172.29.9.10/xuegod-web/vmware/redis-photon:v1.5.0

5.在 web 界面查看刚才上传到仓库中的镜像

9、从私有仓库 pull 镜像

1.首先删除本地镜像

[root@harbor harbor]# docker rmi 172.29.9.10/xuegod-web/vmware/redis-photon:v1.5.0

2.pull 私有仓库中的镜像并验证

[root@harbor harbor]# docker pull 172.29.9.10/xuegod-web/vmware/redis-photon:v1.5.0

拉取成功!

以上就是如何使用harbor搭建Docker私有仓库的全部过程了。

FAQ

harbor也可以存储helm chart的

docker-compose常用命令

docker-compose ps #查看all容器

docker-compose up -d == docker-compose start #启动all的容器
docker-compose down == docker-compose stop #关闭all的容器

⚠️ 知识补充:

1、如果以后修改了harbor.yml文件,那么先停止使用docker-compose down,再去修改harbor.yml文件,重新启动部署 ./install.sh
2、正常启动harbor启动:docker-compose up -d
3、未修改配置文件,重启Harbor命令:docker-compose start | stop | restart

你可以使用 docker-compose 来启动或关闭 Harbor 服务。但必须在与 docker-compose.yml 相同的目录中运行。即使之前把docker-compose二进制文件移动到PATH路径里了,但也需要在合适的地方执行这个命令才行;

📍 不同harbor软件包的方式有点区别

注意:不同harbor软件包的方式有点区别,但是大体上是差不多的;

  • harbor-offline-installer-v1.5.0.tgz

这里配置的是harbor.cfg文件。

  • harbor-offline-installer-v1.10.10.tgz

📍 关于如何修改harmor密码,感觉很繁琐的样子。。。(修改了好几次都没成功。。。)

  • 自己按网上这个修改了,但是没生效,很奇怪。。。

http://www.javashuo.com/article/p-mwfuezme-gm.html

📍 还有个问题,如何卸载harbor服务呢?

📍 还有个问题:这个harbor的版本号怎么奇奇怪怪的。。。

怎么最新的版本号是v1.10开头的呢,难道是1版本和2版本同时迭代的吗???。。。。

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

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码 x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号 《云原生架构师实战》

image-20230107215126971

🍀 个人博客站点

http://47.97.48.237/ (即将上线域名:onedayxyy.cn)

image-20230917111843405

🍀 语雀

https://www.yuque.com/xyy-onlyone

image-20230912072007284

🍀 csdn https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎 https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!