快速说明版:
- 升级 Docker 到最新版,19.x 版本的 Docker 在 Harbor 升级数据库时迁移数据会失败
- 需要先升级到 Harbor 2.0.0,因为 2.3.0 不支持直接从 1.9.x 版本升级
- 然后升级到 Harbor 2.3.0,从这个版本开始 postgresql 数据库从 9.6 升级到了 13.3
- 最后后升级到 Harbor 2.8.0 或更新版本
详细步骤
基础系统: CentOS 7.x
基础 Docker 版本:19.03.9
原 Harbor 版本 1.9.3
备份旧版
旧版安装目录位于 /home/harbor
,数据目录位于 /home/harbor_data
。
- 停止旧版容器组:
cd /home/harbor && docker-compose down
- 备份 Harbor 配置:
mv /home/harbor /home/harbor.1.9.3
- 备份数据库目录:
cp -Rpf /home/harbor_data/database /home/harbor_data/1.9.3_database
升级 docker 版本
这一步非常重要!19.03.9 版本的 docker 在升级 Harbor 时数据库迁移会失败!
- 删除旧版 docker:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 引入 docker 仓库配置:
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装 docker:
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
升级 Harbor 到 v2.0.0
Harbor 1.9.3 不能直接升级到 2.3.0,需要先升级到 1.10.0 或 2.0.0。我们直接升级到 2.0.0。
- 下载离线安装包:
cd /home
wget https://github.com/goharbor/harbor/releases/download/v2.0.0/harbor-offline-installer-v2.0.0.tgz
tar zxf harbor-offline-installer-v2.0.0.tgz
- 导入镜像:
cd /home/harbor
docker image load -i harbor.v2.0.0.tar.gz
- 引入旧版配置文件:
cp /home/harbor.1.9.3/harbor.yml /home/harbor/
- 根据旧版配置生成当前版本配置文件:
docker run -it --rm -v /:/hostfs goharbor/prepare:v2.0.0 migrate -i /home/harbor/harbor.yml
- 执行安装脚本
./install.sh
- 确认安装正确且数据正确
- 停止容器组:
docker-compose down
- 备份 Harbor 配置:
mv /home/harbor /home/harbor.2.0.0
- 备份数据库:
cp -Rpf /home/harbor_data/database /home/harbor_data/2.0.0_database
升级 Harbor 到 v2.3.0
这一升级过程会将 PostgreSql 数据库从 9.6 升级到版本 13。
- 下载离线安装包:
cd /home
wget https://github.com/goharbor/harbor/releases/download/v2.3.0/harbor-offline-installer-v2.3.0.tgz
tar zxf harbor-offline-installer-v2.3.0.tgz
- 导入镜像:
cd /home/harbor
docker image load -i harbor.v2.3.0.tar.gz
- 引入旧版配置文件:
cp /home/harbor.2.0.0/harbor.yml /home/harbor/
- 根据旧版配置生成当前版本配置文件:
docker run -it --rm -v /:/hostfs goharbor/prepare:v2.3.0 migrate -i /home/harbor/harbor.yml
- 执行安装脚本
./install.sh
- 确认安装正确且数据正确
- 停止容器组:
docker-compose down
- 备份 Harbor 配置:
mv /home/harbor /home/harbor.2.3.0
- 备份数据库:
cp -Rpf /home/harbor_data/database /home/harbor_data/2.3.0_database
升级 Harbor 到 v2.8.2
- 下载离线安装包:
cd /home
wget https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz
tar zxf harbor-offline-installer-v2.8.2.tgz
- 导入镜像:
cd /home/harbor
docker image load -i harbor.v2.8.2.tar.gz
- 引入旧版配置文件:
cp /home/harbor.2.3.0/harbor.yml /home/harbor/
- 根据旧版配置生成当前版本配置文件:
docker run -it --rm -v /:/hostfs goharbor/prepare:v2.8.2 migrate -i /home/harbor/harbor.yml
- 执行安装脚本
./install.sh
- 确认安装正确且数据正确
出现问题时回退版本
假如 Harbor 升级过程中出现问题,我们可以通过以下步骤回退到上一个版本状态,例如从 2.0.0 回退到 1.9.3:
cd /home/harbor
docker-compose down
cd /home/harbor_data
rm -f redis/*
rm -rf database
cp -Rpf 1.9.3_database database
cd /home
mv harbor harbor.2.0.0
mv harbor.1.9.3 harbor
cd harbor
docker-compose up -d
在 CentOS 8 上的问题和解决
我们的生产服使用的是 CentOS 8,在这上面碰到的问题和 CentOS 7.x 上的又有区别。
更新 Yum 仓库
首先是 Yum 不能正常工作,因为 CentOS 8(非 Stream 版)已提前进入 EOL 停止服务阶段,因此镜像已被官方移动。
参考 清华大学开源软件镜像站 的说明,修改 repo 设置,不过我们这里做了一点修改以适应 8-stream
版本:
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos|g' \
-e 's|/$releasever|/8-stream|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo
然后执行
yum clean all
yum makecache -v
升级 Docker
yum install -y libseccomp-devel
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -v --allowerasing
systemctl enable docker
systemctl start docker