麦克斯仇
Think different
159
文章
35569
阅读
首页
INDEX
文章
ARTICLE
关于
ABOUT
Docker 部署 Harbor2.10.2(docker私服)
创建日期:
2023/01/31
修改日期:
2024/04/20
Docker
Harbor
> 官方教程:[Harbor Installation and Configuration](https://goharbor.io/docs/2.10.0/install-config/) # 安装条件 ## 硬件 | 资源 | 最小 | 推荐 | | ---- | ----- | ------ | | CPU | 2 CPU | 4 CPU | | 内存 | 4 GB | 8 GB | | 磁盘 | 40 GB | 160 GB | ## 软件 | 软件 | 版本 | 描述 | | -------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | Docker engine | Version 20.10.10-ce+ or higher | 教程:[CentOS7安装Docker-CE](https://maxqiu.com/article/detail/24) | | Docker Compose | docker-compose (v1.18.0+)<br>或<br>docker compose v2 (docker-compose-plugin) | 按照上文教程会一起安装 `docker compose v2` | | Openssl | 最新版即可 | 用于为 `Harbor` 生成证书和密钥 | # 下载 > 下文以 `v2.10.2` 为例,且当前用户为 `root` 地址:[https://github.com/goharbor/harbor/releases/tag/v2.10.2](https://github.com/goharbor/harbor/releases/tag/v2.10.2) 1. 下载安装包 - `offline` :离线版,即压缩包内包含镜像文件,启动时自动导入<br> `harbor-offline-installer-v2.10.2.tgz` - `online` :在线版,启动时在线下载镜像<br>`harbor-online-installer-v2.10.2.tgz` 2. 下载完成后上传至服务器 3. 上传完成后执行解压<br>`tar -xzf harbor-offline-installer-v2.10.2.tgz` 4. 解压后将解压的文件夹移动到想要安装的路径下(以安装在 `/work/` 目录下为例)<br>`mkdir /work`<br>`mv harbor /work/` 5. 删除压缩包(可以最后再做)<br>`rm -rf harbor-offline-installer-v2.10.2.tgz` 6. 进入该软件目录,方便下文操作<br>`cd /work/harbor/` # 配置 ## 配置 HTTPS ### 方案一:申请 SSL 证书 此方案适合有域名的情况,此时需要申请一张 SSL 证书 1. 申请 SSL 证书:阿里、腾讯都有免费的 SSL 证书可以申请,审核通过后下载到本地 2. 创建文件夹用于存放证书文件,并进入该文件夹 ```bash mkdir cert cd cert/ ``` 3. 上传证书文件:将证书文件内的 `xxx.key` 和 `xxx.crt` 上传到 `/work/harbor/cert` 目录下 3. 转换证书 ```bash openssl x509 -inform PEM -in harbor.maxqiu.com.crt -out harbor.maxqiu.com.cert ``` 4. 以上步骤完成后,执行 `cd ..` 回到 Harbor 安装路径下! ### 方案二:使用 `OpenSSL` 创建证书 下文中,以 Harbor 的宿主机 IP 是 `192.168.220.101` 为例(如果没有域名,可以自定义一个域名,例如 `harbor.maxqiu.com` ,此时需要配置宿主机的 `hosts` 文件做 DNS 映射,其他需要访问 Harbor 的主机也需要修改 `hosts` ,下文中对应的 IP 也需要改为域名)。 1. 创建文件夹用于存放证书文件,并进入该文件夹 ```bash mkdir cert cd cert/ ``` 2. 生成 CA 证书私钥 ```bash openssl genrsa -out ca.key 4096 ``` 3. 生成 CA 证书 ```bash openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.220.101" \ -key ca.key \ -out ca.crt ``` 4. 生成服务器私钥 ```bash openssl genrsa -out 192.168.220.101.key 4096 ``` 5. 生成服务器证书签名请求(CSR) ```bash openssl req -sha512 -new \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.220.101" \ -key 192.168.220.101.key \ -out 192.168.220.101.csr ``` 6. 生成 x509 v3 扩展文件 ```bash 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.220.101 EOF ``` 7. 使用该 v3.ext 文件为 Harbor 主机生成证书。 ```bash openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in 192.168.220.101.csr \ -out 192.168.220.101.crt ``` 8. 转换证书 ```bash openssl x509 -inform PEM -in 192.168.220.101.crt -out 192.168.220.101.cert ``` 9. 以上步骤完成后,执行 `cd ..` 回到 Harbor 安装路径下! ## 配置 Harbor YML 文件 1. 拷贝配置文件(在 Harbor 安装路径下)<br>`cp harbor.yml.tmpl harbor.yml` 2. 编辑配置文件<br>`vim harbor.yml` 3. 修改如下内容并保存 ```yaml hostname: 192.168.220.101 # IP/域名 http: port: 80 # HTTP 端口(默认:80,可自行修改) https: port: 443 # HTTPS 端口(默认:443,可自行修改) certificate: /work/harbor/cert/192.168.220.101.crt # SSL 证书(修改对应的证书路径) private_key: /work/harbor/cert/192.168.220.101.key # SSL 私钥(修改对应的证书路径) database: password: root123 # Harbor 数据库密码(强烈建议修改) data_volume: /work/harbor/data # 数据存储目录,默认在根目录下的 `data` 文件夹,可自行修改(绝对路径) log: local: location: /work/harbor/log # 日志文件路径,默认在 `/var/log/harbor` ,可自行修改(绝对路径) ``` # 初始化与启动 ## 第一次启动 执行以下命令完成首次启动 ```bash ./install.sh ``` 如果使用在线版在下载镜像是卡住,可以关闭脚本再重新执行 ## 停止服务 执行以下命令停止服务 ```bash docker compose down -v ``` ## 启动服务 执行以下命令启动服务 ```bash docker compose up -d ``` ## 刷新配置 当更新了 `harbor.yml` 配置文件时(例如更改 https 设置),需要执行以下命令 ```bash # 1. 停止服务 docker compose down -v # 2. 更新配置 ./prepare # 3. 启动服务 docker compose up -d ``` # 使用 ## 创建项目 1. 浏览器打开 `https://192.168.220.101` 访问控制台,如非 443 则添加端口,默认的管理员用户名和密码是 `admin` 和 `Harbor12345` 2. 登录后建议立即修改管理员密码 3. 点击左侧 `项目` ,点击 `新建项目` ,项目名称任意(使用下文以 `test` 为例),点击确保保存 4. 在 `用户管理` 新建用户,并在 `项目定额` 中授权该用户访问指定项目 ## 镜像上传 以下操作在**需要访问 Harbor 的 Docker 宿主机上**执行 ### 配置跳过证书校验 不论是使用申请的 SSL 证书,还是使用自建的证书,都需要配置 1. 编辑 docker 配置文件 ```bash vim /etc/docker/daemon.json ``` 2. 添加如下配置(注意,该文件内容是 json 格式,如果已经有内容了,添加配置时需要注意文件格式,即英文逗号分隔符) ```bash { "insecure-registries" : ["https://192.168.220.101"] } ``` 3. 完成配置后重启服务 ```bash systemctl restart docker ``` ### 登录 执行以下命令登录 Harbor 私服 ```bash docker login 192.168.220.101 ``` 根据提示输入用户名密码,看到 `Login Succeeded` 即代表成功登录 ### 上传 准备上传镜像前,镜像的完整标签格式应该是:`[主机名称或IP(:端口)]/[项目名]/[镜像名]:[版本号]` 一般在 `docker build` 时指定,或者使用 `docker image tag` 更换名称 下面使用更换镜像标签的方式做示例: ```bash # 拉取一个镜像用来做实验 docker pull nginx:1.23.3 # 更换镜像标签 docker image tag nginx:1.23.3 192.168.220.101/test/nginx:1.23.3 # 推送到私服 docker push 192.168.220.101/test/nginx:1.23.3 # 删除本地的镜像 docker rmi nginx:1.23.3 192.168.220.101/test/nginx:1.23.3 # 重新从私服拉取 docker pull 192.168.220.101/test/nginx:1.23.3 ```
121
全部评论