Docker-compose部署Harbor实操(含故障处理)

操作环境

Harbor主机系统类型:Centos7
Harbor版本:v2.8.3
Docker-compose版本:1.29.2
Docker版本:

一.Docker及Docker-compose环境安装

官方对Docker及Docker-compose版本有要求,目前我这个主机的版本不适用,那么本章会添加一个对docker升级的操作。如果是没有安装过docker的,可以直接从第2步开始

在这里插入图片描述

1.查看docker版本及安装的软件包,卸载docker。

执行命令:

docker -v
yum list installed | grep docker
yum -y remove docker*

在这里插入图片描述
在这里插入图片描述

2.使用官方一键安装命令进行docker重新安装,发现有报错。

执行命令:

curl -sSL https://get.docker.com/ | sh

在这里插入图片描述

报错信息:

Package yum-utils-1.1.31-54.el7_8.noarch already installed and latest version
+ sh -c 'yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo'
  File "/usr/bin/yum-config-manager", line 135
    except yum.Errors.RepoError, e:
           ^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: multiple exception types must be parenthesized

报错原因:我这台主机的python环境是升级到了python3,使用python的时候默认就使用版本3的,而yum-config-manager这个文件头的Python没有改成Python2,所以导致了报错,修改一下。

执行命令:

vim /usr/bin/yum-config-manager

vi模式下输入i,修改完成后输入:wq 退出保存
在这里插入图片描述

再次执行安装docker命令,安装完成并检查版本

curl -sSL https://get.docker.com/ | sh
docker -v

在这里插入图片描述

3.配置docker-compose

执行命令:

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.27.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

先用的国内源的docker-compose,发现部署下来有问题,然后改用GitHub的了
报错信息:

/usr/local/bin/docker-compose: line 1: html: No such file or directory
/usr/local/bin/docker-compose: line 2: syntax error near unexpected token `<'
'usr/local/bin/docker-compose: line 2: `<head><title>502 Bad Gateway</title></head>

新的执行命令:

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v

在这里插入图片描述

二.下载及部署Harbor

在本次实操,Harbor的安装包需要从官网下载,下载地址:
自行选择版本:https://github.com/goharbor/harbor/releases
手动下载的话,在下载页面下拉到最底部,下载第一个文件,我这里使用github镜像加速网站wget下载。
1.安装包下载及证书文件创建

执行命令:

cd /
mkdir harbor
wget https://ghproxy.com/https://github.com/goharbor/harbor/releases/download/v2.8.3/harbor-offline-installer-v2.8.3.tgz

在这里插入图片描述
解压文件, 并生成证书,将证书移到指定位置

执行命令:
解压安装包

pwd
tar -zxvf harbor-offline-installer-v2.8.3.tgz

创建证书文件

openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Hubei/L=Wuhan/O=example/OU=Personal/CN=192.168.1.1" \
 -key ca.key \
 -out ca.crt

创建证书目录及移动证书文件

mkdir -p /harbor/data/cert
mv ca* /harbor/data/cert

2.配置Harbor及安装
进入harbor的目录,拷贝Harbor YML原始文件到新文件

执行命令:

cd harbor
cp harbor.yml.tmpl harbor.yml

在这里插入图片描述

vim harbor.yml

在这里插入图片描述
执行prepare脚本启用https服务

cd harbor
./prepare

在这里插入图片描述
执行安装脚本

./install.sh 


可以看到各容器正常运行

docker ps

在这里插入图片描述
3.Harbor配置文件详解
因为后面需要通过默认配置的密码登录,我们通过命令过滤出harbor.yml的有效配置,然后给大家注释看看都是什么意思。

执行命令:

cd /harbor/harbor
grep -vE '^\s*(#|$)' harbor.yml

配置文件有效配置信息,可以自行修改

hostname: 192.168.1.1  # Harbor的主机名或IP地址

http:
  port: 80  # HTTP端口

https:
  port: 443  # HTTPS端口
  certificate: /harbor/data/cert/ca.crt  # HTTPS证书路径
  private_key: /harbor/data/cert/ca.key  # 证书私钥路径

harbor_admin_password: Harbor12345  # Harbor管理员密码

database:
  password: root123  # 数据库密码
  max_idle_conns: 100  # 最大空闲连接数
  max_open_conns: 900  # 最大打开连接数
  conn_max_lifetime: 5m  # 连接最大生命周期
  conn_max_idle_time: 0  # 连接最大空闲时间

data_volume: /data  # 数据存储路径

trivy:
  ignore_unfixed: false  # 是否忽略未修复的漏洞
  skip_update: false  # 是否跳过Trivy更新
  offline_scan: false  # 是否离线扫描
  security_check: vuln  # 安全检查类型
  insecure: false  # 是否允许不安全的连接

jobservice:
  max_job_workers: 10  # 最大作业工作线程数
  logger_sweeper_duration: 1  # 日志清理时间(单位:天)

notification:
  webhook_job_max_retry: 3  # Webhook作业最大重试次数
  webhook_job_http_client_timeout: 3  # Webhook作业HTTP客户端超时时间(单位:秒)

log:
  level: info  # 日志级别
  local:
    rotate_count: 50  # 本地日志轮转数量
    rotate_size: 200M  # 本地日志轮转大小(单位:兆字节)
    location: /var/log/harbor  # 本地日志存储路径

_version: 2.8.0  # Harbor的版本号

proxy:
  http_proxy:  # HTTP代理
  https_proxy:  # HTTPS代理
  no_proxy:  # 不需要代理的主机列表
  components:
    - core
    - jobservice
    - trivy  # 需要代理的组件列表

upload_purging:
  enabled: true  # 是否启用上传清理
  age: 168h  # 清理上传文件的最大年龄(单位:小时)
  interval: 24h  # 清理任务运行间隔(单位:小时)
  dryrun: false  # 是否仅模拟运行清理任务

cache:
  enabled: false  # 是否启用缓存
  expire_hours: 24  # 缓存过期时间(单位:小时)

Harbor启动和停止命令:
在他的docker-compose.yml所在目录执行如下命令:
在这里插入图片描述
关闭服务

docker-compose down

启动服务

docker-compose up -d

三.登录及验证Harbor可用性

在网络可达的其他主机上直接输入他的IP地址即可访问
在这里插入图片描述
登录,账号是admin,密码是配置文件中的harbor_admin_password参数,默认是Harbor12345,登录成功
在这里插入图片描述
创建用户
在这里插入图片描述
登录测试,有报错

执行命令:

docker login 192.168.1.1

在这里插入图片描述
报错信息:

Error response from daemon: Get "https://192.168.1.1/v2/": tls: failed to verify certificate: x509: certificate relies on legacy Common Name field, use SANs instead

故障原因是自生成的证书被Docker认为不可靠的,我做了2个操作,把自生成的证书放入Docker配置文件中,然后将自己的IP或域名加入Docker允许的不安全连接中。

执行命令:

命令解释:切换到docker-compose文件所在目录,关闭harbor服务,再切换到docker配置目录,创建放置证书的目录,把自建证书拷贝过去,然后在docker配置目录中编辑json文件

cd /harbor/harbor
docker-compose down
cd /etc/docker/
mkdir -p cert.d/192.168.1.1
cp /harbor/data/cert/*   /etc/docker/cert.d/192.168.1.1/
vi daemon.json

daemon.json配置信息:

{
  "registry-mirrors": ["https://192.168.1.1"],
  "insecure-registries":["https://192.168.1.1"]
}

再执行命令,启动服务链接测试,输入刚刚创建的新用户

systemctl  restart docker
cd /harbor/harbor
docker-compose up -d
docker login 192.168.1.1

在这里插入图片描述
登录成功!

上传镜像测试

命令格式:

docker tag 镜像名 <Harbor服务器地址>/<仓库名称>/<镜像标签>
docker push <Harbor服务器地址>/<仓库名称>/<镜像标签>

在这里插入图片描述
上传成功~!

下载镜像测试

登录harbor网页,找到镜像,复制拉取命令(注意这里显示的大小不一致是因为有压缩)
在这里插入图片描述
在终端粘贴下载命令执行
在这里插入图片描述
下载成功~!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值