使用Harbor搭建Docker私有仓库
Harbor 企业级私有仓库搭建

环境说明
Harbor 被部署为多个 Docker 容器。目标主机需要安装 Docker 和 Docker Compose。
硬件要求
| 硬件 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 2 核 | 4 核或更高 |
| 内存 | 4G | 8G 或更高 |
| 硬盘 | 40G | 160G 或更高 |
软件要求
| 软件 | 版本 | 描述 |
|---|---|---|
| Docker | 23.0.1 | 容器 |
| Docker Compose | v2.16.0 | 编排 |
| OpenSSL | 优先选择最新 | 用于为 Harbor 生成证书和密钥 |
| Harbor | 2.6.4 | 仓库系统 |
安装前准备
开始安装 Harbor 之前,需要对操作系统环境进行一些配置和安装相关组件。
修改 YUM 源
移除当前的 yum 源
1
rm -rfv /etc/yum.repos.d/*拉取阿里云的 yum 源
1
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo更新软件列表和系统内核
1
yum -y update安装 yum 工具包
1
yum install -y yum-utils wget配置 Docker 的 yum 源
1
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装或更新 OpenSSL
查看当前的 OpenSSL 版本
如果 OpenSSL 没有安装过,则安装,否则更新。
1
openssl version安装 OpenSSL
1
yum install -y openssl更新 OpenSSL
1
yum update openssl
操作系统配置
关闭 SELinux
1
2
3
4
5
6# 临时禁用SELinux(不管是永久关闭还是临时关闭,此命令都最好执行一下)
setenforce 0
# 永久关闭SELinux(重启后将不会再开启)
sed -i "s/SELINUX=permissive/SELINUX=disabled/" /etc/sysconfig/selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config关闭防火墙
1
2
3
4
5# 临时禁用防火墙
systemctl stop firewalld
# 永久禁用防火墙
systemctl disable firewalld
安装和配置 Docker
本次安装的 Docker 是社区版。
安装 Docker
1
yum install -y docker-ce-23.0.1-1.el7 docker-ce-cli-23.0.1-1.el7 containerd.io-6.18-3.1.el7修改 Docker 配置
Docker 默认是通过 cgroup 来管理容器的,默认驱动为 cgroupfs,而 Kubernetes 使用的是 systemd ,因此我们需要将驱动改为 systemd。并且使用国内加速源来下载镜像。
1
vi /etc/docker/daemon.json输入以下内容,其中包含驱动的修改及镜像源的配置
1
2
3{
"registry-mirrors":["https://registry.docker-cn.com"]
}启动 Docker 服务
1
2
3
4
5
6
7
8
9# 启动 Docker
systemctl start docker
# 设置 Docker 开机自启动
systemctl enable docker
# 如果之前已经启动过 docker,那么修改配置之后,可以执行下面两个命令。
systemctl daemon-reload
systemctl restart docker查看 Docker 状态和版本
1
2
3
4
5
6# 通过 systemctl status 命令查看是否运行成功
# 如果返回有:Active: active (running) since 五 2020-12-04 02:36:23 CST; 16s ago信息说明启动成功。
systemctl status docker
# 我们也可以通过 docker version 命令来查看版本信息,看看是否存在问题。
docker version
安装 Docker Compose
检查操作系统
Docker Compose 的版本很多,需要根据系统的类型及指令集架构来下载相应的版本。
1 | |
命令执行结果如下:
1 | |
我这里使用是 x86_64 的 Linux 系统。
开始安装
下载对应的软件包
1
2
3
4
5# 自动匹配操作系统的下载方法
curl -L "https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose
# 明确操作系统的下载方法
curl -L "https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64" -o docker-compose将软件包移动到
/usr/local/bin目录下1
mv docker-compose /usr/local/bin/docker-compose对 docker-compse 目录授权
1
chmod +x /usr/local/bin/docker-compose查看版本
1
docker-compose -v命令执行结果如下:
1
2-- console log --
Docker Compose version v2.16.0
安装和配置 Harbor
下载离线安装软件包
下载离线软件包
1
wget https://github.com/goharbor/harbor/releases/download/v2.6.4/harbor-offline-installer-v2.6.4.tgzHarbor 的软件包比较大,下载需要比较长的时间。建议用自己的电脑下载下来之后再上传到服务器。这样可以节省一点时间。
如果是下载到本地再上传服务器,可以用下面的命令上传。
1
scp harbor-offline-installer-v2.6.4.tgz root@<IP地址>:/root/解压软件包
1
tar xvf harbor-offline-installer-v2.6.4.tgz
修改配置文件
1 | |
配置文件内容如下:
1 | |
上面给出的是示例配置文件,主要修改下面几个参数:
hostname:访问地址,配置成当前主机的 IP 地址即可。如果有云服务器且购买过域名,也可以配置成域名。harbor_admin_password:管理员账户的密码https:使用 https 访问时可以保留,如果不使用 https,则需要将 https 及其子项注释掉。
安装 Harbor
这一步的所有操作都需要在已经解压的 harbor 目录下完成。
检查和更新配置文件
1
./prepare执行这个命令会有如下提示
WARNING:root:WARNING: HTTP protocol is insecure. Harbor will deprecate http protocol in the future. Please make sure to upgrade to https。这是因为我们没有配置 https 访问导致的。可以忽略。
安装 harbor
1
./install.sh这个命令执行会自动进行 5 步操作,知道提示下面的信息就说明安装已完成。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60-- console log --
[Step 0]: checking if docker is installed ...
Note: docker version: 23.0.1
[Step 1]: checking docker-compose is installed ...
Note: Docker Compose version v2.16.0
[Step 2]: loading Harbor images ...
...
Loaded image: goharbor/harbor-log:v2.6.4
...
Loaded image: goharbor/harbor-jobservice:v2.6.4
...
Loaded image: goharbor/redis-photon:v2.6.4
...
Loaded image: goharbor/notary-signer-photon:v2.6.4
Loaded image: goharbor/prepare:v2.6.4
...
Loaded image: goharbor/harbor-core:v2.6.4
...
Loaded image: goharbor/harbor-db:v2.6.4
...
Loaded image: goharbor/harbor-exporter:v2.6.4
...
Loaded image: goharbor/nginx-photon:v2.6.4
...
Loaded image: goharbor/notary-server-photon:v2.6.4
...
Loaded image: goharbor/chartmuseum-photon:v2.6.4
...
Loaded image: goharbor/harbor-portal:v2.6.4
...
Loaded image: goharbor/harbor-registryctl:v2.6.4
...
Loaded image: goharbor/registry-photon:v2.6.4
...
Loaded image: goharbor/trivy-adapter-photon:v2.6.4
[Step 3]: preparing environment ...
[Step 4]: preparing harbor configs ...
...
Note: stopping existing Harbor instance ...
[Step 5]: starting Harbor ...
[+] Running 10/10
⠿ Network harbor_harbor Created 0.6s
⠿ Container harbor-log Started 25.7s
⠿ Container harbor-portal Started 23.4s
⠿ Container registry Started 23.4s
⠿ Container harbor-db Started 17.7s
⠿ Container redis Started 17.9s
⠿ Container registryctl Started 23.3s
⠿ Container harbor-core Started 23.2s
⠿ Container nginx Started 25.6s
⠿ Container harbor-jobservice Started 25.6s
✔ ----Harbor has been installed and started successfully.----
访问测试
在浏览器输入
http://<ip>,就可以打开 Harbor 的页面了。管理员用户名:admin
管理员密码:配置文件
harbor_admin_password配置的密码。
客户端使用配置
一般情况下客户端的 Docker 会安装在 Linux 系统或 Mac 系统下。Windows 环境也基本上使用的是 VisualBox 上的 Linux 系统。不管是哪种操作系统,配置几乎都是一样的。主要是配置
daemon.json来实现。
Linux 系统客户端配置
修改/etc/docker/daemon.json文件,如果没有可以新增一个。
1 | |
这里主要是增加了一个insecure-registries的配置。值指向我们安装好的 Harbor 访问地址。
配置完成后,重启 Docker。
1 | |
Mac 系统客户端配置
如果你使用的是命令行安装的 Docker,可以参考 Linux 的配置方法。如果是二进制安装,即是一个可视化的软件。只需要找到这个软件的设置界面,进入 Docker Engine,在原来的配置基础上增加即可。
同样的,修改完毕后,要重新启动 Docker。