1 安装 docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
验证:
docker-compose -version
PS:如果想要卸载docker-compose,请执行以下命令sudo rm /usr/local/bin/docker-compose
2 安装 harbor
本文是参照官方文档进行编写的。https://goharbor.io/docs/2.0.0/install-config/
2.1 下载安装包
如果服务器可以联网直接下载在线安装包(harbor-offline-installer-v2.8.2.tgz
)。
然后解压安装包:
tar xzvf harbor-online-installer-version.tgz
2.2 配置 Https Access
生成授权证书
生成 CA 证书的秘钥:
openssl genrsa -out ca.key 4096
生成 CA 证书:
-subj
参数的值反映了自己的机构信息。
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=shumei/OU=Personal/CN=ahshumei.com" \
-key ca.key \
-out ca.crt
生成服务端证书
- 生成秘钥:
openssl genrsa -out ahshumei.com.key 4096
- 生成 a certificate signing request (CSR)
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=shumei/OU=Personal/CN=ahshumei.com" \
-key ahshumei.com.key \
-out ahshumei.com.csr
- Generate an x509 v3 extension file
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=ahshumei.com
DNS.2=ahshumei
DNS.3=服务器外网 IP
EOF
- 使用
v3.ext
为 harbor 服务生成一个证书
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in ahshumei.com.csr \
-out ahshumei.com.crt
配置证书到 Harbor 和 Docker
生成 ca.acrt、ahshumei.com.crt、和 ahshumei.com.key 文件后,我们要将他们配置到 harbor 和 docker。
- 复制服务端证书和 key 到harbor 服务器的证书文件夹
cp ahshumei.com.crt /home/shumei/soft/harbor/cert
cp ahshumei.com.key /home/shumei/soft/harbor/cert
- 将
yourdomain.com.crt
转换为yourdomain.com.cert
, Docker 会用到。
openssl x509 -inform PEM -in ahshumei.com.crt -out ahshumei.com.cert
- 复制服务器证书、key、和 CA 文件到harbor 服务器的 Docker 证书目录。
cp ahshumei.com.cert /etc/docker/certs.d/ahshumei.com:11005/
cp ahshumei.com.key /etc/docker/certs.d/ahshumei.com:11005/
cp ca.crt /etc/docker/certs.d/ahshumei.com:11005/
如果将 nginx 的 443 端口映射到了其他端口,证书文件夹目录创建为:/etc/docker/certs.d/ahshumei.com:prot/
或者/etc/docker/certs.d/harbor_ip:prot
,否则不需要加端口。
- 重启 docker 引擎
systemctl restart docker
# 或
sudo service docker restart
证书目录结构如下:
/etc/docker/certs.d/
└── ahshumei.com:11005
├── ahshumei.com.cert <-- Server certificate signed by CA
├── ahshumei.com.key <-- Server key signed by CA
└── ca.crt <-- Certificate authority that signed the registry certificate
2.3 部署 harbor
配置必须的参数
hostname:ahshuemi.com
https:
port: 11005
certificate: /home/shumei/soft/harbor/cert/ahshumei.com.cert
private_key: /home/shumei/soft/harbor/cert/ahshumei.com.key
harbor_admin_password: 修改
database:
password: 修改
data_volume: /home/shumei/soft/harbor/data
执行安装脚本
sudo ./install.sh
安装后默认会启动。
如果 harbor
已经安装过,修改 harbor.yml
后需要先执行 prepare
脚本:
./prepare
如果 harbor 服务启动着,需要先关闭服务并移除存在的实例(镜像数据不会丢失):
docker-compose down -v
启动 harbor
docker-compose up -d
验证是否启动成功
- 浏览器访问
https://ahshumei.com:11005
,应该可以打开 harder 服务地址。 - 查看
/etc/docker/daemon.json
确保-insecure-registry
配置项中不包含https://ahshumei.com:11005
。 - 使用 Docker client 登录 harbor。
docker login ahshumei.com:11005
相关命令
Stop Harbor
sudo docker-compose stop
Restart harbor
sudo docker-compose start
参考文档
Harbor Installation and Configuration[https://goharbor.io/docs/2.0.0/install-config/]
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 ethan89@aliyun.com