Docker Registry升级部署Harbor的实现步骤

 更新时间:2026年04月29日 09:50:23   作者:rockmelodies  
本文详细介绍了如何从单机Docker Registry迁移到企业级Harbor仓库的完整流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

第一步:备份现有 Registry 数据(重要!)

在卸载任何东西之前,请务必备份您现有的镜像数据,以防万一需要回滚。

# 1. 查看旧仓库占用的空间(确认数据位置)
sudo du -sh /data/docker-registry
# 2. 创建备份目录
mkdir -p ~/backup
# 3. 将整个数据目录打包备份
sudo tar czf ~/backup/old-registry-backup-$(date +"%Y%m%d").tar.gz -C /data docker-registry
# 4. 验证备份文件是否创建成功
ls -lh ~/backup/

第二步:停止并卸载旧的 Docker Registry 容器

这一步是清理旧环境,为 Harbor 腾出空间和端口。

# 1. 停止并删除旧的 registry 容器
docker stop docker-registry
docker rm docker-registry
# 2. (可选)如果您想彻底清理空间,可以删除旧的数据目录
# 注意:请确保上一步的备份已成功完成,再执行此操作
# sudo rm -rf /data/docker-registry

第三步:部署 Harbor

我们将使用 Harbor 的离线安装包进行部署,这种方式更稳定可靠。

3.1 安装 Docker Compose

Harbor 依赖于 Docker Compose 来管理其多个组件。

# 下载 Docker Compose(如果尚未安装)
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version

3.2 下载并配置 Harbor

  1. 下载离线安装包
    访问 Harbor 官方 GitHub 的 Release 页面,找到 v2.7.1 或更新的稳定版本,复制离线安装包(harbor-offline-installer-<版本>.tgz)的下载链接,然后在服务器上执行:

    cd ~
    wget https://github.com/goharbor/harbor/releases/download/v2.7.1/harbor-offline-installer-v2.7.1.tgz
    tar xvf harbor-offline-installer-v2.7.1.tgz
    cd harbor
  2. 修改配置文件
    复制配置文件模板并进行修改。

    cp harbor.yml.tmpl harbor.yml
    vim harbor.yml

    必须修改的配置项:

    # 修改为您的服务器IP地址或域名,例如:192.168.1.100
    hostname: 请替换为您的服务器IP
    # http 相关配置保持默认,监听80端口
    http:
      port: 80
    # 重要:将 https 相关部分全部注释掉,因为我们暂时使用 HTTP
    # https:
      # port: 443
      # certificate: /your/certificate/path
      # private_key: /your/private/key/path
    # 修改管理员密码(默认是 Harbor12345,请务必修改!)
    harbor_admin_password: 您的新密码
    # 修改数据存储路径(使用我们之前准备的目录)
    data_volume: /data/harbor

    请特别注意:因为我们是测试或内网环境,这里暂时注释掉 HTTPS 配置。生产环境务必配置证书启用 HTTPS。

3.3 安装并启动 Harbor

# 创建数据目录
sudo mkdir -p /data/harbor
# 执行安装脚本(这会自动拉取镜像并启动所有 Harbor 服务)
sudo ./install.sh

安装完成后,您可以通过浏览器访问 http://您的服务器IP,使用用户名 admin 和您刚才设置的密码登录 Harbor 的 Web 管理界面。

第四步:将旧镜像迁移到 Harbor

由于 Harbor 2.x 版本有自己的元数据管理机制,不能通过简单地覆盖存储目录来迁移。推荐使用最高效的工具:skopeo

4.1 安装 skopeo

# Ubuntu 18.04 可以直接从官方源安装
sudo apt-get update
sudo apt-get install -y skopeo

4.2 执行镜像迁移

skopeo 可以在不同仓库间直接复制镜像,而无需在本地磁盘解压和重新压缩镜像层,速度极快。

首先,在 Harbor 的 Web 界面中,为您旧的镜像项目创建对应的项目(Project)。例如,如果您旧仓库中有一个镜像叫 localhost:5000/myav1,那么您需要在 Harbor 中创建一个名为 myapp 的项目。

然后,使用 skopeo copy 命令进行迁移:

# 命令格式:
# skopeo copy --src-tls-verify=false --dest-tls-verify=false \
#   docker://旧仓库地址/项目名/镜像名:标签 \
#   docker://Harbor地址/项目名/镜像名:标签
# 示例:将之前测试用的 hello-world 镜像迁移到 Harbor
# 请将 192.168.1.100 替换为您的实际服务器IP
skopeo copy --src-tls-verify=false --dest-tls-verify=false \
  docker://localhost:5000/hello-world:test \
  docker://192.168.1.100/library/hello-world:test

提示:您可以通过脚本批量处理所有镜像。先通过 curl http://localhost:5000/v2/_catalog 获取镜像列表,然后写一个循环脚本逐个迁移。

第五步:配置 Docker 客户端并验证

修改您本机和所有需要访问新仓库的客户端的 Docker 配置,将新 Harbor 地址也加入 insecure-registries 列表。

# 编辑 Docker 配置文件
sudo vim /etc/docker/daemon.json

确保文件内容如下:

{
  "insecure-registries": ["您的服务器IP:5000", "您的服务器IP"]
}

重启 Docker:

sudo systemctl restart docker

现在,您可以登录新的 Harbor 并进行验证:

# 登录 Harbor (输入您设置的 admin 密码)
docker login 您的服务器IP
# 拉取刚才迁移的镜像进行测试
docker pull 您的服务器IP/library/hello-world:test
# 运行测试
docker run --rm 您的服务器IP/library/hello-world:test

通过以上步骤,您就成功地从单机的 Docker Registry 迁移到了企业级的 Harbor 仓库。如果在这个过程中遇到任何问题,例如配置文件修改或镜像迁移脚本编写,随时可以再问我。

到此这篇关于Docker Registry升级部署Harbor的实现步骤的文章就介绍到这了,更多相关Docker Registry升级部署Harbor内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • skywalking容器化部署docker镜像构建k8s从测试到可用

    skywalking容器化部署docker镜像构建k8s从测试到可用

    这篇文章主要为大家介绍了skywalking容器化部署docker镜像构建k8s从测试到可用的构建部署过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Docker容器与宿主机相互访问更方便的方法

    Docker容器与宿主机相互访问更方便的方法

    Docker是当今使用范围最广的开源容器技术之一,具有高效易用的优点,然而如果使用Docker时采取不当安全策略,则可能导致系统面临安全威胁,这篇文章主要给大家介绍了关于Docker容器与宿主机相互访问更方便的方法,需要的朋友可以参考下
    2023-05-05
  • 解决docker报错Encountered errors while bringing up the project实测有效

    解决docker报错Encountered errors while bringing&n

    这篇文章主要介绍了解决docker报错Encountered errors while bringing up the project实测有效!具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 基于Docker的MongoDB实现授权访问的方法

    基于Docker的MongoDB实现授权访问的方法

    这篇文章主要介绍了基于Docker的MongoDB实现授权访问的方法,需要的朋友可以参考下
    2017-03-03
  • 如何配置docker官方源并用yum安装docker

    如何配置docker官方源并用yum安装docker

    本篇文章主要介绍了如何配置docker官方源并用yum安装docker ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • docker容器访问宿主机host设置的域名方式

    docker容器访问宿主机host设置的域名方式

    文章讨论了在Docker容器中访问宿主机的网络设置,特别是当容器内的服务需要请求一个在宿主机hosts文件中定义的域名时,通过使用`--network=host`模式,容器可以直接使用宿主机的网络,从而无需通过Docker网关,这样可以避免端口冲突
    2025-12-12
  • docker 如何实现磁盘读写

    docker 如何实现磁盘读写

    本文主要介绍了docker实现磁盘读写,包括创建Docker镜像、运行 Docker容器以及在容器中进行磁盘读写操作的步骤和代码示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Docker报错:OCI runtime exec failed: exec failed: container_linux.go:380: starting container process的解决方法

    Docker报错:OCI runtime exec failed: exec failed: contain

    这篇文章主要给大家介绍了关于Docker报错:OCI runtime exec failed: exec failed: container_linux.go:380: starting container process的解决方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • dockerfile报错“/bin/sh -c yum -y install“问题及解决

    dockerfile报错“/bin/sh -c yum -y install“问

    文章主要讨论了解决Docker容器安装vim时出现错误的问题,指出是容器版本不兼容导致,建议使用Centos 7版本的容器,提供了一种解决方案,并鼓励读者参考此经验
    2026-05-05
  • Docker使用、容器迁移的方案详解

    Docker使用、容器迁移的方案详解

    Docker 是一个开源的容器化平台,用于打包、部署和运行应用程序及其依赖环境,本文给大家介绍Docker使用、容器迁移的方案,感兴趣的朋友一起看看吧
    2025-04-04

最新评论