目录
1,适用的系统
在阿里云服务器 ubuntu 18.04 x86_64验证通过
2,准备离线安装包
habor的github下载地址为:https://github.com/goharbor/harbor/releases/download/v1.10.2/harbor-offline-installer-v1.10.2.tgz
如果下载速度过慢可以从这里下载离线安装包:https://pan.baidu.com/s/11GShI5-evJBFrcYim1q0QA,提取码:n8sh
3,安装依赖软件
软件 | 版本 | 描述 |
---|---|---|
Docker engine | 17.06.0-ce及以上 | 依赖 |
Docker Compose | 1.18.0 及以上 | 依赖 |
Openssl | 最好是最新版本 | 用于生成证书 |
a) 安装 docker
参考这篇博客:https://blog.csdn.net/u010177891/article/details/82829034,或者参考官网:https://docs.docker.com/engine/install/
b) 安装 Docker Compose
下载:
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
添加执行权限:
sudo chmod +x /usr/local/bin/docker-compose
加入PATH路径:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
检验安装成功:
docker-compose --version
#正常有如下回显
docker-compose version 1.25.4, build 1110ad01
官网安装指导:https://docs.docker.com/compose/install/
c) 安装openssl
apt install opensll
4,生成证书(使用https协议需要)
a) 准备生成证书的路径
mkdir -p /data/cert && cd /data/cert
b) 生成证书颁发机构证书
生成CA证书私钥:
openssl genrsa -out ca.key 4096
生成CA证书:
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=hub.sunkai.com" \
-key ca.key \
-out ca.crt
hub.sunkai.com为自定义的域名根据实际情况填写。
c) 生成服务器证书
生成私钥:
openssl genrsa -out hub.sunkai.com.key 4096
生成证书签名请求:
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=hub.sunkai.com" \
-key hub.sunkai.com.key \
-out hub.sunkai.com.csr
hub.sunkai.com为自定义的域名根据实际情况填写。
制作一个x509 v3扩展文件:
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=hub.sunkai.com
DNS.2=hub.sunkai
DNS.3=hub
EOF
使用v3.ext
文件为您的Harbor主机生成证书:
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in hub.sunkai.com.csr \
-out hub.sunkai.com.crt
openssl x509 -inform PEM -in hub.sunkai.com.crt -out hub.sunkai.com.cert
d) 创建docker访问harbor的证书路径:
mkdir -p /etc/docker/certs.d/hub.sunkai.com:20202
其中hub.sunkai.com为自定义的域名也就是将来docker向harbor中push镜像的地址,也可以使用ip;20202为端口,你也可以定义为其他端口,若不指定默认使用443端口。
将证书放入以下路径:
cp hub.sunkai.com.cert /etc/docker/certs.d/hub.sunkai.com:20202/
cp hub.sunkai.com.key /etc/docker/certs.d/hub.sunkai.com:20202/
cp ca.crt /etc/docker/certs.d/hub.sunkai.com:20202/
e) 重启docker
systemctl restart docker
官网指导:https://goharbor.io/docs/1.10/install-config/configure-https/
5,开始安装
解压安装包:
tar -xvf harbor-offline-installer-v1.10.1.tgz
cd harbor
修改vi harbor.yml配置:
hostname | hub.sunkai.com,自定义的域名 |
certificate | /data/cert/hub.sunkai.com.cert,cert证书路径 |
private_key | /data/cert/hub.sunkai.com.key,key证书路径 |
harbor_admin_password | web界面登录密码。默认管理员用户名admin,密码可以在这里修改 |
其他配置项参考官网:https://goharbor.io/docs/1.10/install-config/configure-yml-file/
运行安装脚本:
sudo ./install.sh
可能需要几分钟,等待安装完成。
修改docker配置文件/etc/docker/daemon.json,添加insecure-registries配置项:
root@sunkai:/home/sunkai/harbor# cat /etc/docker/daemon.json
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"],
"insecure-registries": ["hub.sunkai.com:20202"]
}
重启docker:
systemctl restart docker
web页面登录Harbor:
在浏览器输入:https://hub.sunkai.com:20202,如果你的域名没有备案不能能访问域名可以使用ip:端口,或者在hosts文件中添加域名解析:C:\Windows\System32\drivers\etc\hosts。如果你没有在harbor.yml修改密码,默认的管理员用户名和密码为admin
和Harbor12345
。
新建一个项目用来存放镜像:
6,push镜像
docker login登录仓库
root@sunkai:/home/sunkai/harbor# docker login hub.sunkai.com:20202
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
root@sunkai:/home/sunkai/harbor#
docker images查看本机的镜像:
root@sunkai:/home/sunkai/harbor# docker images |grep hello-world
hello-world latest fce289e99eb9 15 months ago 1.84kB
docker tag重新打标签,myproject为刚在web页面新建的项目名称。
root@sunkai:/home/sunkai/harbor# docker tag hello-world:latest hub.sunkai.com:20202/myproject/hello-world:v1.0
root@sunkai:/home/sunkai/harbor# docker images |grep hello-world
hello-world latest fce289e99eb9 15 months ago 1.84kB
hub.sunkai.com:20202/myproject/hello-world v1.0 fce289e99eb9 15 months ago 1.84kB
root@sunkai:/home/sunkai/harbor#
docker push到Harbor仓库:
root@sunkai:/home/sunkai/harbor# docker push hub.sunkai.com:20202/myproject/hello-world:v1.0
The push refers to repository [hub.sunkai.com:20202/myproject/hello-world]
af0b15c8625b: Pushed
v1.0: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524
root@sunkai:/home/sunkai/harbor#
如果出现“requested access to the resource is denied”,检查下testpriject这个项目是否存在或者这个这个项目是不是别人的是有没有权限访问。
root@sunkai:/home/sunkai/harbor# docker push hub.sunkai.com:20202/testpriject/hello-world:v1.0
The push refers to repository [hub.sunkai.com:20202/testpriject/hello-world]
af0b15c8625b: Preparing
denied: requested access to the resource is denied
root@sunkai:/home/sunkai/harbor#
------- end