申明
操作系统版本:CentOS Linux release 7.9.2009 (Core)
1 | cat /etc/centos-release |
内核版本:3.10.0-957.el7.x86_64
1 | uname -a |
系统架构:x86_64
1 | arch |
docker 版本:Docker version 26.1.4, build 5650f9b
1 | docker -v |
docker-compose 版本:Docker Compose version v2.36.1
1 | docker-compose -v |
harbor 版本:v2.13.0
这里一定要使用 v2.13.0,笔者也尝试了不同版本,部分版本确实存在坑。类似问题 issue 可以参见:https://github.com/goharbor/harbor/issues/21996
环境准备
系统磁盘空间检查
首先确认 docker 数据存储目录,查看磁盘空间是否充足可用
1 | df -h |
docker 数据存储目录检查
查看 docker 数据存储目录,默认是:/var/lib/docker
1 | docker info |
对比存在磁盘不足,可以修改 docker 数据存储目录。
笔者以改为/home/docker
为例:
步骤1:创建对应目录:
1 | mkdir -p /home/docker |
步骤2:注意 docker 旧的数据需要迁移过去:
1 | cp -a /var/lib/docker /home/docker/ |
步骤3:再配置daemon.json
的data-root
:
1 | vim /etc/docker/daemon.json |
步骤4:填写data-root
配置为指定数据存储目录:
1 | { |
- 配置
docker live-restore
,这样再重启 dockerd 时,就不会重启容器。
步骤5:执行配置重载命令:
1 | kill -SIGHUP $(pidof dockerd) |
步骤6:执行配置重载命令:
1 | systemctl daemon-reload |
步骤7:再重启 docker:
1 | systemctl restart docker |
步骤8:再次执行docker info 查看是否修改正确:
1 | docker info |
docker 安装
参见笔者的另一篇文章:Docker 安装
docker-compose 安装
步骤1:切换到指定目录:
1 | cd /usr/local/bin/ |
步骤2:从 github 下载 docker-compose 可执行包:
1 | wget https://github.com/docker/compose/releases/download/v2.36.1/docker-compose-linux-x86_64 -O docker-compose |
步骤3:添加执行权限:
1 | chmod +x /usr/local/bin/docker-compose |
步骤4:在任意位置执行 docker-compose 命令输出版本信息,即安装成功:
1 | docker-compose -v |
docker 安装 redis
步骤1:创建对应目录:
1 | 配置目录 |
步骤2:切换到 redis 配置文件目录:
1 | cd /home/redis/conf |
步骤3:下载配置文件
https://redis.io/docs/latest/operate/oss_and_stack/management/config/ 下载对应版本的配置文件
1 | wget https://raw.githubusercontent.com/redis/redis/7.4/redis.conf |
步骤4:修改 redis.conf 配置文件:
1 | vim /home/redis/conf/redis.conf |
更新如下配置:
1 | bind 0.0.0.0 |
步骤5:docker 拉取 redis 镜像:
1 | docker pull redis:7.4 |
步骤6:启动 redis
1 | docker run -d --name redis7.4 \ |
步骤7:查看容器日志检查是否启动成功:
1 | docker logs -f redis7.4 |
可以看到:Ready to accept connections tcp 字样表示启动成功。
docker 安装 postgreSQL
笔者安装的是带 postgis 版本的,方便后续地理坐标数据存储
步骤1:创建 postgreSQL 数据目录:
1 | mkdir /home/postgresql/data |
步骤2:拉取 postgis/postgis 镜像
1 | docker pull postgis/postgis:16-3.5 |
步骤3:启动 postgreSQL 容器:
1 | docker run -d --name postgresql16 \ |
步骤4:查看容器日志检查是否启动成功:
1 | docker logs -f postgresql16 |
可以看到:database system is ready to accept connections 字样表示启动成功。
也可以使用下述命令查询 postgreSQL 的版本信息:
1 | docker exec postgresql16 psql -U postgres -c "SELECT version();" |
docker 安装 harbor
步骤1:创建 harbor 安装目录:
1 | mkdir -p /home/harbor/data |
步骤2:切换到指定目录:
1 | cd /home/harbor/ |
步骤3:使用 openssl 生成证书,依次执行下述命令
- 注意:如果不配置 https 或者有正式的 ssl 域名证书,则忽略本步骤。
1 | 生成 ca.key |
步骤4:从 github 下载离线版本安装包:harbor-offline-installer-v2.13.0.tgz
1 | wget https://github.com/goharbor/harbor/releases/download/v2.13.0/harbor-offline-installer-v2.13.0.tgz -O harbor-offline-installer-v2.13.0.tgz |
步骤5:解压 tgz 文件:
1 | tar xzvf /home/harbor/harbor-offline-installer-v2.13.0.tgz |
步骤6:配置文件信息配置
解压成功之后,需要进入 harbor 文件夹,可以看到下述文件:
里面有个模板配置文件harbor.yml.tmpl
,需要复制并重命名成harbor.yml
:
1 | cp /home/harbor/harbor/harbor.yml.tmpl /home/harbor/harbor/harbor.yml |
将配置文件中的下述信息进行自定义配置:
1 | hostname: 宿主机的IP |
上述配置中,如果配置了https
,则external_url
需要配置为:https://
+ 宿主机 IP 或者 域名 + https.port
,浏览器访问时,证书信息如下:
步骤7:创建数据库
注意上述配置了数据库使用宿主机的 postgreSQL,因此需要在宿主机的 pgSQL 数据库中创建对应的数据库:
1 | docker exec -it postgresql16 psql -U postgres -c "CREATE DATABASE harbor_db;" |
步骤8:执行预处理程序:
1 | /home/harbor/harbor/prepare |
预处理脚本执行成功,则会出现 Generated configuration file: /compose_location/docker-compose.yml 字样。
此时当前文件夹下出现了docker-compose.yml
文件,
注意:上述配置再次改动后,需要重新执行 prepare 脚本,重新生成 docker-compose.yml 文件。
- 重置数据库
1 | docker exec -it postgresql16 psql -U postgres -c "DROP DATABASE IF EXISTS harbor_db;" -c "CREATE DATABASE harbor_db;" |
出现 DROP DATABASE、CREATE DATABASE 字样,表示重新创建数据库成功。
- 删除历史数据
1 | rm -rf /home/harbor/data/* |
步骤9:启动 harbor 服务
1 | sh /home/harbor/harbor/install.sh |
执行完成,出现 Harbor has been installed and started successfully 字样表示启动成功
此时浏览器访问:http://宿主机IP:1440
即可打开 harbor 控制台页面。此时浏览器可能出现证书不安全提示,强制访问即可。
账号为:admin,密码为:Harbor12345。登录成功页面如下,强烈建议及时修改管理员账号密码
步骤9:如果需要卸载 harbor 服务,则执行:
1 | 切换至 harbor 文件目录 |
harbor 控制台配置
修改主题色
左下角切换主题色
创建镜像仓库
在系统管理
的仓库管理
中创建新的仓库:
填写目标信息之后,点击确定,列表展示了仓库信息。
创建项目
点击项目
菜单,创建新的项目
填写项目名称为image
,并开启镜像代理:
- 注意:开启了镜像代理,则该项目不能向其推送镜像。访问级别是公开的则所有人可拉取该项目下的镜像。
上述配置好后,在已经搭建了 harbor 的服务器上,拉取测试镜像:
1 | docker pull 127.0.0.1:1444/image/hello-world |
此时登录 harbor 控制台可以看到已经拉取成功的镜像。
宿主机 nginx 配置
nginx 配置示例如下:
1 | upstream harbor { |
注意上述配置自定义了403.html
,需要在/usr/share/nginx/html
目录中创建403.html
:
1 |
|