Appearance
离线安装Harbor1.9.0
不建议使用1.x这里是历史文档,建议使用2.x,2.x有很多新的东西
前置条件:Docker安装
docker-compose安装
下载
https://github.com/docker/compose/releases上传改名加权限
bash
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v # 测试下载离线二进制包
harbor v1.9.0 · harbor · 页面:https://github.com/goharbor/harbor/releases/tag/v1.9.0
解压harbor
tar -xvf harbor-offline-installer-v1.9.0.tgz修改harbor.yml
进入harbor目录:vi harbor.yml
hostname: xxx # 有域名就配域名,没有域名就配IP
# Https配置[可以不做] 如果配置参考下面的步骤
# 不使用https参照这篇 https://goharbor.io/docs/2.8.0/install-config/run-installer-script/
将https、port、certificate、private_key解开注释
port https的端口,默认443
certificate SSL 证书的路径
private_key SSL 密钥的路径
harbor_admin_password: 登录harbor密码配置https
openssl的安装包在此目录下有
openssl.tar,使用解压后的文件安装即可,在线安装直接yum安装即可
生成证书颁发机构 证书
1、生成CA证书私钥
bash
openssl genrsa -out ca.key 40962、生成 CA 证书
bash
# 注意修改 yourdomain.com 有域名用域名,没有域名用IP
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
-key ca.key \
-out ca.crt问题:
Can't load /root/.rnd into RNG
bash# 解决办法: cd /root openssl rand -writerand .rnd重新执行即可
生成服务器证书
1、生成私钥
bash
# 注意修改 yourdomain.com 有域名用域名,没有域名用IP
openssl genrsa -out yourdomain.com.key 40962、生成证书签名请求 (CSR)
bash
# 注意修改 yourdomain.com 有域名用域名,没有域名用IP
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
-key yourdomain.com.key \
-out yourdomain.com.csr3、生成 x509 v3 扩展文件
bash
# 注意修改 yourdomain.com 有域名用域名,没有域名用IP
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF问题:
域名方式
DNS.x可以继续加授信域名
IP方式
bashcat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = IP:xxx.xxx.xxx.xxx EOF
4、使用 v3.ext 文件,为 Harbor 主机生成证书
bash
# 注意修改 yourdomain.com 有域名用域名,没有域名用IP
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in yourdomain.com.csr \
-out yourdomain.com.crt向 Harbor 和 Docker 提供证书
生成后 ca.crt, yourdomain.com.crt和 yourdomain.com.key,必须将它们提供给 Harbor 和 Docker,并重新配置 Harbor 。
1、将服务器证书和密钥复制到 Harbor 主机上的证书文件夹中。
bash
cp yourdomain.com.crt /data/cert/
cp yourdomain.com.key /data/cert/2、转换 yourdomain.com.crt 自 yourdomain.com.cert, 供 Docker 使用。
Docker 守护程序解释 .crt 文件 作为 CA 证书和 .cert 文件作为客户端证书
sh
openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert3、将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。您必须先创建相应的文件夹。
sh
cp yourdomain.com.cert /etc/docker/certs.d/yourdomain.com/
cp yourdomain.com.key /etc/docker/certs.d/yourdomain.com/
cp ca.crt /etc/docker/certs.d/yourdomain.com/如果将默认端口 443 映射到其他端口,请创建文件夹,或
bash
nginx /etc/docker/certs.d/yourdomain.com:port /etc/docker/certs.d/harbor_IP:port4、重新启动 Docker
bash
systemctl restart docker部署或重新配置Harbor
如果尚未部署 Harbor,请参阅 配置 Harbor YML 文件:https://goharbor.io/docs/2.8.0/install-config/configure-yml-file/ 有关如何通过指定harbor.yml中的属性: hostname 、 https。
1、运行脚本以启用 HTTPS
bash
./prepare
./install.sh2、如果 Harbor 正在运行,请停止并删除现有实例docker stop $(docker ps -q) & docker rm $(docker ps -aq)
您的镜像数据保留在文件系统中,因此不会丢失任何数据
bash
docker-compose down -v3、重新启动Harbor
bash
docker-compose up -ddocker-compose命令:
bash
docker-compose ps
docker-compose up -d # 后台启动,如果容器不存在根据镜像自动创建
docker-compose down -v # 停止容器并删除容器
docker-compose start # 启动容器,如果容器不存在就无法启动,不会自动创建镜像
docker-compose stop # 停止容器
docker-compose logs # 查看日志(harbor日志存放地址/ver/logs/harbor)1、使用IP或域名访问WEB、登录
2、docker登录
bash
docker login xxx.xxx.xxx.xxx输入账号密码
推送镜像
创建项目——>xxx
1、制作镜像标签
bash
docker tag 镜像名:标签 IP/项目名/镜像名:标签推送镜像
bash
docker push IP/项目名/镜像名:标签如果在其他地方连接说不安全,可以将ca证书安装即可,
如果使用证书颁发者的中间证书,请将中间证书与您自己的证书合并以创建证书捆绑包。运行以下命令
bash
cat intermediate-certificate.pem >> yourdomain.com.crt当 Docker 守护程序在某些操作系统上运行时,您可能需要在操作系统级别信任证书。例如,运行以下命令
Ubuntu
bash
cp yourdomain.com.crt /usr/local/share/ca-certificates/yourdomain.com.crt
update-ca-certificatesRed Hat (CentOS 等)
bash
cp yourdomain.com.crt /etc/pki/ca-trust/source/anchors/yourdomain.com.crt
update-ca-trustwin直接下载ca根证书安装,安装完证书后重启Docker
重新安装
bash
systemctl stop harbor # 停止现有的服务
docker stop `docker ps -q`
docker stop `docker ps -qa`
docker rmi `docker images`再重新安装即可
配置开机启动
bash
vi /etc/systemd/system/harbor.service添加:
bash
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/docker-compose -f 安装目录/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f 安装目录/docker-compose.yml down
[Install]
WantedBy=multi-user.target配置权限
chmod 755 harbor.service # 配置权限
systemctl daemon-reload # 重载
systemctl enable harbor # 开机启动
systemctl status harbor # 查看状态配置完成检查发现harbor状态没有,是停止的,但是手动执行docker-compose ps检查发现是正常运行的
使用
systemctl restart harbor重启一次就好了
问题记录
Creating network "harbor_harbor" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-cbded1298bf1 -j RETURN: iptables: No chain/target/match by that name.
(exit status 1))说明docker网关是关闭的,docker network无法对新的container进行网络配置,重启一下docker就行。
systemctl restart dockerDocker http登录Harbor
新建或修改
bash
vi /etc/docker/daemon.jsonjson
{
"insecure-registries":["IP"],
"live-restore": true
}Harbor仓库迁移
这里是以http部署的迁移,https的迁移可以参考一下
前置条件:有Docker环境,与原版本建议相差不要太大
安装docker-compose
下载
https://github.com/docker/compose/releases上传改名加权限
bash
$ mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
$ docker-compose -v # 测试停止原Harbor仓库
bash
$ systemctl stop harbor # 有配置的话
# 没有的话到 /.../Harbor/harbor目录下执行
$ docker-compose downHarbor数据迁移
将原来的Harbor数据打包,我是整个目录打包,整个目录结构大致如下
bash
Harbor
├── data # 数据目录
├── harbor # harbor离线包解压出来的目录
│ ├── common
│ ├── docker-compose.yml # docker-compose用到的文件
│ ├── harbor.v1.9.0.tar.gz # 离线镜像包,docker load使用
│ ├── harbor.yml # harbor的配置文件
│ ├── install.sh # harbor安装脚本【除了第一次后面不要执行,执行会导致原来的数据不可用】
│ └── prepare
├── harbor-offline-installer-v1.9.0.tgz
└── logs导入离线镜像
在/.../Harbor/harbor目录下执行
bash
$ docker load -i harbor.v1.9.0.tar.gz调整配置
修改/.../Harbor/harbor目录下的harbor.yml文件
bash
hostname: llk.harbor.com
data_volume: /data/Harbor/data
log:
location: /var/log/harborhostname:如果原来配置的是IP地址,必须修改,如果是域名,根据需要看是否调整解析/调整hosts等
data_volume:新的数据目录
https的:除了以上内容外,还需要调整证书的路径
修改完毕执行
bash
$ ./prepare配置开机启动
bash
vi /etc/systemd/system/harbor.service添加:
bash
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/docker-compose -f /.../Harbor/harbor目录/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /.../Harbor/harbor目录/docker-compose.yml down
[Install]
WantedBy=multi-user.target配置权限
bash
$ chmod 755 harbor.service # 配置权限
$ systemctl daemon-reload # 重载
$ systemctl enable harbor # 开机启动
$ systemctl status harbor # 查看状态
$ systemctl start harbor # 启动
$ systemctl stop harbor # 停止