Centos部署企业级Docker仓库-Harbor

1 服务器信息

  • 操作系统:Centos 7.9 x64
  • IP地址:10.10.10.13
  • 用户名/密码:root/geoscene
  • 机器名:ps.geoscene.cd

2 安装Docker

介绍安装可访问外网的情况下,安装稳定版本的Docker的步骤:

  1. 更新系统:yum update

  2. 卸载旧版本的Docker

yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
  1. 安装Docker依赖项:yum install -y yum-utils,提供yum-config-manager访问工具

  2. 添加Docker仓库:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

  3. 安装Docker Engineyum install docker-ce docker-ce-cli containerd.io

  4. 启动Docker服务:systemctl start docker

  5. 配置Docker开机启动:systemctl enable docker

  6. 查看Dokcer状态:systemctl status docker

3 安装docker-compose

  1. 下载稳定版本:sudo curl -L "https://github.com/docker/compose/releases/download/1.28.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. 应用可执行权限:sudo chmod +x /usr/local/bin/docker-compose

4 安装Harbor

  1. 拷贝Harbor安装包harbor-offline-installer-v2.0.6.tgz/usr/local文件夹
  2. 解压安装包:tar -xzvf harbor-offline-installer-v2.0.6.tgz
  3. 修改harbor.yml.tmp文件名称:mv harbor.yml.tmp harbor.yml
  4. 修改harbor.yml文件:vi harbor.yml,修改http的端口为8081,修改harbor_admind_password
  5. 如果不需要使用https访问,可以屏蔽https配置,跳过第5章;若需要https访问,可查看第5章内容
  6. 其余配置项保持默认
  7. 如果需要https访问,参照第5章配置https相关证书后,指定./prepare,来为nginx配置https;如果不需要https访问,查看第8步
  8. 安装Harbor./install.sh,会自动安装依赖的Docker镜像;
  9. 访问Harbor并创建项目test

5 配置HTTPS访问

配置HarborHTTPS访问呢,需要为其创建给相关的证书,具体操作如下:

5.1 生成证书颁发机构证书

官网文档中讲,生产环境中应该使用从CA获得证书。但是,在测试或者开发环境中,可以自己生成CA证书。

  1. 生成CA证书私钥
$ openssl genrsa -out ca.key 4096
  1. 生成CA证书
$ openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
 -key ca.key \
 -out ca.crt

5.2 生成服务器证书

  1. 生成一个私钥
$ openssl genrsa -out ps.geoscene.cd.key 4096
  1. 生成一个CSR(证书签名请求)
openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=ps.geoscene.cd" \
    -key ps.geoscene.cd.key \
    -out ps.geoscene.cd.csr
  1. 生成一个V3扩展文件

无论是使用FQDN还是IP地址连接到Harbor主机,都必须创建此文件,以便为Harbor主机生成符合使用者备用名称(SAN)和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=ps.geoscene.cd
DNS.2=ps.geoscene.cd
DNS.3=hostname
EOF
  1. 使用v3.txt文件为Harbor服务器生成证书
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in ps.geoscene.cd.csr \
    -out ps.geoscene.cd.crt

5.3 为Harbor和Docker提供证书

  1. 查看/data目录下有没有cert文件夹,如果没有则创建一个文件夹
  2. 拷贝服务器密钥和证书到cert文件夹
$ cp ps.geoscene.cd.crt /data/cert/
$ cp ps.geoscene.cd.key /data/cert/
  1. 为了Docker使用,将.crt转为.certDocker daemon.crt文件看做CA证书,将.cert文件看做是客户端证书
$ openssl x509 -inform PEM -in ps.geoscene.cd.crt -out ps.geoscene.cd.cert
  1. 将服务器证书、密钥和CA文件拷贝到Docker证书文件夹

/etc/docker文件夹中创建certs.d文件夹,然后在这个文件夹中创建ps.geoscene.cd子文件。如果HTTPS的端口不是默认的443,那么子文件夹名称后需要添加指定的端口号,例如:ps.geoscene.cd:444

$ cp ps.geoscene.cd.cert /etc/docker/certs.d/ps.geoscene.cd:444/
$ cp ps.geoscene.cd.key /etc/docker/certs.d/ps.geoscene.cd:444/
$ cp ca.crt /etc/docker/certs.d/ps.geoscene.cd:444/
  1. 重启docker服务:systemctl restart docker

6 验证Harbor是否可用

客户端系统是Windows系统,请确保已经在系统上安装了Docker

  1. 访问Docker界面,点击设置按钮,点击"Docker Engine"

  2. 修改insecure-registries对应的内容,增加10.10.10.13:8081ps.geoscene.cd:8081

  3. 打开命令窗口,访问Harbordocker login ps.geoscene.cd,根据提示输入用户名和密码

  4. 从本地推送镜像至Harbor

$ docker tag SOURCE_IMAGE[:TAG] ps.geoscene.cd:8081/test/REPOSITORY[:TAG]
$ docker push ps.geoscene.cd:8081/test/REPOSITORY[:TAG]
  1. Harbor拉取镜像到本地:docker pull ps.geoscene.cd:8081/test/REPOSITORY[:TAG]

7 Harbor其他操作

  • 重启harbor所有容器:docker-compose up -d
  • 删除harbor所有容器:docker-compose down -v

8 安装过程中遇到的问题

  1. harborredis容器不能正常启动

通过docker logs redis查看容器的日志,最后两行提示如下内容:

1:M 05 Mar 06:09:19.140 # Can't handle RDB format version 9
1:M 05 Mar 06:09:19.140 # Fatal error loading the DB: Invalid argument. Exiting.

解决方法:

  • 在宿主机中使用命令find / -name *.rdb
  • 删除/data/redis/dump.rdb文件
  • 重启redis容器:docker restart redis
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值