01
—
前言
02
—
搭建部署
本文采用的是docker-compose来部署harbor,为什么选择docker-compose? 它有什么好处?
首先,Harbor作为一个企业级的Docker Registry,其自身包含了多种组件,如前端界面、后端存储、缓存服务等,这些组件之间存在复杂的依赖关系,使用docker-compose可以 轻松解决服务之间的依赖关系,确保各个服务按照预期顺序启动,并且能够自动处理网络连接、端口映射等问题 。
其次, 可以 进行 一键启停操作 ,通过docker-compose up或docker-compose down命令,运维人员可以轻松的启动和停止整个harbor环境,而且部署难度底,这对于运 维人员前期部署和后期维护,无疑是大大提供了高效便捷 。
最后docker-cpmose支持灵活扩展,当需要调整Harbor的架构或增加新功能时,可以直接修改docker-compose.yml文件来添加或删除服务实例,适应不同的负载需求。
综上所述,采用docker-compose部署Harbor有助于降低部署复杂度、提高效率,使得整个系统易于管理和维护,同时也符合现代DevOps实践中提倡的基础设施即代码的理念。
# tar -xf docker-
24.0
.
2
.tgz
#
cp
docker/* /usr/bin/
#
cat
> /usr/lib/systemd/
system
/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=http
s:
//docs.docker.
com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
#TasksMax=infinity
TimeoutStartSec=
0
Delegate=yes
KillMode=process
Restart=onfailure
StartLimitBurst=
3
StartLimitInterval=
60
s
[Install]
WantedBy=multi-user.target
EOF
# chmod +
x
/usr/lib/systemd/
system
/docker.service
# systemctl daemon-reload
# systemctl start docker
# systemctl enable docker
# systemctl status docker
# mv docker-compose-linux-x86_64 docker-compose
# cp docker-compose /usr/local/bin/
#
# chmod + x /usr/local/bin/docker-compose
# docker-compose -- version
Docker Compose version v2. 24.2
# tar -xf harbor-offline-installer-v2.
10.0
.tgz
#
cp
harbor.yml.tmpl harbor.yml
#
vim
harbor.yaml
#
ls
common common.
sh
docker-compose.yml harbor.v2.
10.0
.tar.gz harbor.yml harbor.yml.tmpl install.
sh
LICENSE prepare
# ./install.
sh
备注:常用的启停命令(须进到harbor目录下执行)
# docker-compose
up
-d #在后台启动所有服务
# docker-compose build #在运行项目前先构建项目所需镜像
# docker-compose
ps
#列出本地docker-compose.yml文件里定义的正在运行的所有服务
# docker-compose
stop
#停止所有服务,如果服务没有停止,可以使用docker-compose kill强制杀死服务
# docker-compose start #开启所有服务
# docker-compose rm #删除所有服务
4. 打开浏览器输入地址就可以登录管理页面啦;
03
—
配置SSL认证
为了提供Harbor镜像仓库的系统安全性, 避免Harbor与客户端在进行敏感数据传输时被窃取或篡改 ,下面对harbor进行ssl认证配置。
1. 生成证书颁布机构证书
1
)生成私钥
#
mkdir
/usr/local/src/pack/harbor/ssl
#
cd
ssl
# openssl genrsa -out
ca
.key
4096
2
)生成CA证书
# openssl req -x509 -
new
-nodes -sha512 -days
3650
\
> -subj
"/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.88.134"
\
> -key
ca
.key \
> -out
ca
.crt
2. 生成服务器证书
1
)生成私钥
# openssl genrsa -out
192.168
.
88.134
.key
4096
2
)生成证书签名请求(CSR)
# openssl req -sha512 -
new
\
-subj
"/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com"
\
-key
192.168
.
88.134
.key \
-out
192.168
.
88.134
.csr
3
)生成一个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
=
192.168
.
88.134
EOF
4
)使用v3.ext文件为您的Harbor主机生成证书
# openssl x509 -req -sha512 -days
3650
\
-extfile v3.ext \
-CA
ca
.crt -CAkey
ca
.key -CAcreateserial \
-in
192.168
.
88.134
.csr \
-out
192.168
.
88.134
.crt
5
) 将domain.
com
.crt转换为domain.
com
.cert,供Docker使用。
#
mkdir
/usr/local/src/pack/harbor/cert
#
cp
./ssl/
192.168
.
88.134
.crt ./ssl/
192.168
.
88.134
.key cert/
# openssl x509 -inform PEM -in
192.168
.
88.134
.crt -out
192.168
.
88.134
.cert
3. 修改harbor的配置文件
# vim harbor.yml
# ./prepare
# docker-compose down -v
# docker-compose up -d
4. 浏览器输入https验证
MUSIC
♬..♩~ ♫. ♪..
END