准备
硬件需求
Resource Capacity Description CPU minimal 2 CPU 4 CPU is preferred Mem minimal 4GB 8GB is preferred Disk minimal 40GB 160GB is preferred
软件需求
Software Version Description Docker engine version 17.06.0-ce+ or higher For installation instructions, please refer to: docker engine doc Docker Compose version 1.18.0 or higher For installation instructions, please refer to: docker compose doc Openssl latest is preferred Generate certificate and keys for Harbor
harbor 安装
下载harbor release 版本的binary 包,官方提供在线安装 和离线安装 两种包,我使用的是离线包安装 解压压缩包
$ tar -xvf tar xvf harbor-online-installer-< version> .tgz
$ tar xvf harbor-offline-installer-< version> .tgz
配置harbor.yml 第一次安装主要是修改hostname成harbor 服务所在的IP, 不要设置成127.0.0.1
或者localhost
等,需要设置成可以在外部访问的IP或者域名。详细配置请参考官方文档harbor安装手册 启动harbor
$ sudo ./install.sh
私有仓库迁移
docker login [ target_registry]
新建project 镜像存储需要放在指定的project 下,否则会上传失败 编写脚本make_migration.sh
#!/bin/sh
source_registry= $1
target_registry= $2
image_names= ` curl -u username:password http://$source_registry/v2/_catalog 2> /dev/null| jq .repositories[ ] | tr -d '"' `
for i in $image_names
do
tags= ` curl -u -u username:password http://$source_registry/v2/$i/tags/list 2> /dev/null| jq ".tags[]" | tr -d '"' `
for j in $tags
do
docker pull $source_registry /$i : $j
docker tag $source_registry /$i : $j $target_registry /$i : $j
docker push target_registry/$i : $j
done
done
推送镜像 调用脚本,拉取镜像,重新tag镜像,推送镜像到harbor
$ /bin/bash make_migration.sh [ source_registry] [ target_registry]
问题
执行make_migration.sh
脚本的时候报jq not found, jq是用来解析json的包,需要提前安装
$ sudo yum install -y jq
docker push 不到harbor, 报不是https
而是http
,需要配置docker
的客户端的/etc/docker/daemon.json
, 添加如下字段:
{ "insecure-registries" : [ target_registry] }
多个不安全的registry用逗号隔开。 如果想要配成https 的访问,请参阅官方文档配置harbor https 访问
参考