4

CentOS7环境安装Harbor(docker私服)

 1 year ago
source link: https://maxqiu.com/article/detail/151
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

CentOS7环境安装Harbor(docker私服)

麦克斯仇 Think different
CentOS7环境安装Harbor(docker私服)

2023/01/31  Docker  Harbor

官方教程:Harbor Installation and Configuration

资源 最小 推荐
CPU 2 CPU 4 CPU
内存 4 GB 8 GB
磁盘 40 GB 160 GB
软件 版本 描述
Docker engine Version 17.06.0-ce+ or higher 教程:CentOS7安装Docker-CE
Docker Compose docker-compose (v1.18.0+)

docker compose v2 (docker-compose-plugin)
按照上文教程会一起安装 docker compose v2
Openssl 最新版即可 用于为 Harbor 生成证书和密钥

地址:https://github.com/goharbor/harbor/releases

下文以 v2.7.0 为例,且当前用户为 root

  1. 下载安装包
    • offline :离线版,即压缩包内包含镜像文件,启动时自动导入
      harbor-offline-installer-v2.7.0.tgz
    • online :在线版,启动时在线下载镜像
      harbor-online-installer-v2.7.0.tgz
  2. 下载完成后上传至服务器
  3. 上传完成后执行解压
    tar xzvf harbor-offline-installer-v2.7.0.tgz
  4. 解压后将解压的文件夹移动到想要安装的路径下(以安装在 /usr/local/ 为例)
    mv harbor /usr/local/
  5. 删除压缩包
    rm -rf harbor-offline-installer-v2.7.0.tgz
  6. 进入该软件目录,方便下文操作
    cd /usr/local/harbor/

配置 HTTPS

下文中,以 Harbor 的宿主机 IP 是 192.168.220.101 为例(也可以自定义一个域名,例如 harbor.maxqiu.com ,此时需要修改 hosts 文件做 DNS 映射,其他需要访问 Harbor 的主机也需要修改 hosts ,下问中对应的 IP 也需要改为域名)。

  1. 创建文件夹用于存放证书文件,并进入该文件夹
    1. mkdir cert
    2. cd cert/
  2. 生成 CA 证书私钥
    1. openssl genrsa -out ca.key 4096
  3. 生成 CA 证书
    1. openssl req -x509 -new -nodes -sha512 -days 3650 \
    2. -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.220.101" \
    3. -key ca.key \
    4. -out ca.crt
  4. 生成服务器私钥
    1. openssl genrsa -out 192.168.220.101.key 4096
  5. 生成服务器证书签名请求(CSR)
    1. openssl req -sha512 -new \
    2. -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.220.101" \
    3. -key 192.168.220.101.key \
    4. -out 192.168.220.101.csr
  6. 生成 x509 v3 扩展文件
    1. cat > v3.ext <<-EOF
    2. authorityKeyIdentifier=keyid,issuer
    3. basicConstraints=CA:FALSE
    4. keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    5. extendedKeyUsage = serverAuth
    6. subjectAltName = @alt_names
    7. [alt_names]
    8. DNS.1=192.168.220.101
    9. EOF
  7. 使用该 v3.ext 文件为 Harbor 主机生成证书。
    1. openssl x509 -req -sha512 -days 3650 \
    2. extfile v3.ext \
    3. CA ca.crt -CAkey ca.key -CAcreateserial \
    4. in 192.168.220.101.csr \
    5. out 192.168.220.101.crt
  8. 向 Docker 提供证书(如果使用的是域名,才需要执行,以 harbor.maxqiu.com 为例)
    1. # 转换 .crt 为 .cert , Docker 守护进程将 .crt 文件解释为 CA 证书,将 .cert 文件解释为客户端证书
    2. openssl x509 -inform PEM -in harbor.maxqiu.com.crt -out harbor.maxqiu.com.cert
  9. 以上步骤完成后,执行 cd .. 回到 Harbor 安装路径下!

配置 Harbor YML 文件

  1. 拷贝配置文件(在 Harbor 安装路径下)
    cp harbor.yml.tmpl harbor.yml
  2. 编辑配置文件
    vim harbor.yml
  3. 修改如下内容并保存
  1. # IP/域名
  2. hostname: 192.168.220.101
  3. # HTTP 端口(默认:80)
  4. http:
  5. port: 80
  6. # HTTPS 端口和证书(修改证书路径)
  7. https:
  8. port: 443
  9. certificate: /usr/local/harbor/cert/192.168.220.101.crt
  10. private_key: /usr/local/harbor/cert/192.168.220.101.key
  11. # Harbor 数据库密码(推荐修改)
  12. database:
  13. password: root123
  14. # 数据存储目录,默认在根目录下的 `data` 文件夹,可自行修改(绝对路径)
  15. data_volume: /usr/local/harbor/data
  16. # 日志文件路径,默认在 `/var/log/harbor` ,可自行修改(绝对路径)
  17. log:
  18. local:
  19. location: /usr/local/harbor/log

执行以下脚本完成首次启动

  1. ./install.sh

如果使用在线版在下载镜像是卡住,可以关闭脚本再重新执行

  1. 浏览器打开 https://192.168.220.101 访问控制台,如非 443 则添加端口,默认的管理员用户名和密码是 adminHarbor12345
  2. 点击左侧 项目 ,点击 新建项目 ,项目名称任意(使用下文以 test 为例),点击确保保存
  3. 用户管理 新建用户,并在 项目定额 中授权该用户访问指定项目

以下操作在需要访问 Harbor 的 Docker 宿主机上执行

如果在上文中使用 IP ,则需要执行以下操作

  1. 编辑 docker 配置文件
    1. vim /etc/docker/daemon.json
  2. 添加如下配置(注意,该文件内容时 json 格式,如果已经有内容了,添加配置时需要注意文件格式,PS:即英文逗号分隔符)
    1. {
    2. "insecure-registries" : ["https://192.168.220.101"]
    3. }
  3. 完成配置后重启服务
    1. systemctl restart docker

如果上文中使用域名,则需要执行以下操作

  1. 创建证书文件夹,如果 Harbor 不使用 443 端口,则创建文件夹时添加端口号。
    1. # 使用 443 端口
    2. mkdir -p /etc/docker/certs.d/harbor.maxqiu.com.crt
    3. # 不使用 443 端口(例如使用 8443)
    4. mkdir -p /etc/docker/certs.d/harbor.maxqiu.com.crt:8443
  2. 将上文创建的服务器证书 harbor.maxqiu.com.cert 、密钥 harbor.maxqiu.com.key 和 CA 文件 ca.crt 复制到当前机器上
  3. 配置操作系统信任证书
    1. # 拷贝证书(如果文件夹带端口,则需要注意路径)
    2. cp /etc/docker/certs.d/harbor.maxqiu.com/harbor.maxqiu.com.cert /etc/pki/ca-trust/source/anchors/harbor.maxqiu.com.crt
    3. # 更新
    4. update-ca-trust
  4. 证书配置完成后,重启 Docker 服务
    1. systemctl restart docker

执行以下命令登录 Harbor 私服

  1. docker login 192.168.220.101

根据提示输入用户名密码,看到 Login Succeeded 即代表成功登录

准备上传镜像前,镜像的完整标签格式应该是:[主机名称或IP(:端口)]/[项目名]/[镜像名]:[版本号]

一般在 docker build 时指定,或者使用 docker image tag 更换名称

下面使用更换镜像标签的方式做示例:

  1. # 拉取一个镜像用来做实验
  2. docker pull nginx:1.23.3
  3. # 更换镜像标签
  4. docker image tag nginx:1.23.3 192.168.220.101/test/nginx:1.23.3
  5. # 推送到私服
  6. docker push 192.168.220.101/test/nginx:1.23.3
  7. # 删除本地的镜像
  8. docker rmi nginx:1.23.3 192.168.220.101/test/nginx:1.23.3
  9. # 重新从私服拉取
  10. docker pull 192.168.220.101/test/nginx:1.23.3

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK