Docker部署Harbor-v2.4.1

Harbor

Harbor官网:https://goharbor.io/

安装docker-ce&docker-compose

[root@docker ~]# yum -y install docker-ce* docker-compose

下载离线包

Harbor三种安装方式

  • 在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小

  • 离线安装:安装包包含部署的相关镜像,因此安装包比较大

  • OVA安装程序:当用户具有vCenter环境时,使用此安装程序,在部署OVA后启动Harbor

[root@docker ~]# wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz

# 解压
[root@docker ~]# tar -zxf harbor-offline-installer-v2.4.1.tgz -C /opt

生成HTTPS证书

​ 可以使用由受信任的第三方CA签名的证书,也可以使用自签名证书。本文将介绍如何使用 OpenSSL创建CA,以及如何使用CA对服务器证书和客户端证书进行签名,证书请求文件字段解析为下:

字段字段含义示例
CCountry国家CN
STState or Province
LLocation or City 城市Beijing
OOrganization 组织或企业example
OUOrganization Unit 部门Personal
CNCommon Name 域名或IPyourdomain.com
# 安装openssl
[root@docker ~]# yum -y install openssl openssl-devel

# 设置本地域名解析
[root@docker ssl]# cat /etc/hosts
192.168.0.50 harbor.registry.com
................................


# 使用openssl生成CA私钥,该私钥后面用于签发自签名证书
[root@docker ~]# mkdir -p /opt/harbor/ssl && cd /opt/harbor/ssl
[root@docker ssl]# openssl genrsa -out ca.key 4096
Generating RSA private key, 4096 bit long modulus
............................................................................................................................................................++
..............................................................++
e is 65537 (0x10001)

# 生成CA证书
[root@docker ~]# openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Hunan/L=Changsha/O=example/OU=example/CN=harbor.registry.com" -key ca.key -out ca.crt

注意:这里需要说明的是CN应该填写您的主机名或能够解析为IP的DNS域名,或者是实际的IP地址,最好不要使用localhost、127.0.0.1这类信息

# The certificate usually contains a .crt file and a .key file, for example, yourdomain.com.crt and yourdomain.com.key
	
# 生成server端私钥
[root@docker ssl]# openssl genrsa -out harbor.registry.com.key 4096
Generating RSA private key, 4096 bit long modulus
........................................................++
...........................................................................................................................................................................................++
e is 65537 (0x10001)


# 生成服务端server证书请求文件(文件名必须是域名.csr)。Adapt the values in the -subj option to reflect your organization. If you use an FQDN to connect your Harbor host, you must specify it as the common name (CN) attribute and use it in the key and CSR filenames.
[root@docker ssl]# openssl req -sha512 -new -subj "/C=CN/ST=Hunan/L=Changsha/O=example/OU=example/CN=harbor.registry.com" -key harbor.registry.com.key -out harbor.registry.com.csr

# 生成一个x509 v3扩展文件,无论您使用FQDN还是IP地址连接到Harbor主机,都必须创建此文件,以便可以为您的Harbor主机生成符合主题备用名称(SAN)和x509 v3的证书扩展要求。替换DNS条目以反映您的域
[root@docker ssl]# cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=harbor.registry.com
DNS.2=harbor.registry
DNS.3=docker
EOF


# 生成服务端server证书
[root@docker ssl]# openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in harbor.registry.com.csr -out harbor.registry.com.crt
Signature ok
subject=/C=CN/ST=Hunan/L=Changsha/O=example/OU=example/CN=harbor.registry.com
Getting CA Private Key

配置证书

​ 由于https通信是建立在Docker客户端与harbor服务器之间,那么因此我们同样也要将证书文件提供给docker,甚至在操作系统层面也需要提供这类凭证

​ harbor采用容器部署方式,使用数据卷来持久化数据,其默认会挂载宿主机文件系统中/data路径至容器内部,证书文件同样也是如此,那么为了让容器内的harbor应用进程方便加载证书文件,我们在默认路径下创建一个目录用来存储证书文件

[root@docker ssl]# mkdir -p /data/certs
[root@docker ssl]# cp harbor.registry.com.{crt,key} /data/certs/

# Docker daemon进程使用.crt作为CA证书,.cert作为客户端证书,因此需要转换crt至cert供docker客户端使用
[root@docker ssl]# [root@docker ssl]# openssl x509 -inform PEM -in harbor.registry.com.crt -out harbor.registry.com.cert


# 将服务器证书,密钥和CA文件复制到Harbor主机上的Docker证书文件夹中。如果路径不存在您必须首先创建适当的文件夹
[root@docker ssl]# mkdir -p /etc/docker/certs.d/harbor.registry.com
[root@docker ssl]# cp ca.crt harbor.registry.com.{cert,key} /etc/docker/certs.d/harbor.registry.com

If you mapped the default nginx port 443 to a different port, create the folder /etc/docker/certs.d/yourdomain.com:port, or /etc/docker/certs.d/harbor_IP:port

# 重启docker
	systemctl restart docker

配置Habor

​ 在harbor安装包解压后的harbor目录中,包含了一个配置模板harbor.tmpl,该模板文件预置了一些默认配置,因此我们将其拷贝一份命名为harbor.yml,然后在此基础之上修改

[root@docker harbor]# cp harbor.yml.tmpl harbor.yml

# 配置文件如下:
[root@docker harbor]# cat harbor.yml
# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: harbor.registry.com

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80

# https related config
https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /opt/harbor/ssl/harbor.registry.com.crt
  private_key: /opt/harbor/ssl/harbor.registry.com.key

# # Uncomment following will enable tls communication between all harbor components
# internal_tls:
#   # set enabled to true means internal tls is enabled
#   enabled: true
#   # put your cert and key files on dir
#   dir: /etc/harbor/tls/internal

# Uncomment external_url if you want to enable external proxy
# And when it enabled the hostname will no longer used
# external_url: https://reg.mydomain.com:8433

# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: root123

# Harbor DB configuration
database:
  # The password for the root user of Harbor DB. Change this before any production use.
  password: root123
  # The maximum number of connections in the idle connection pool. If it <=0, no idle connections are retained.
  max_idle_conns: 100
  # The maximum number of open connections to the database. If it <= 0, then there is no limit on the number of open connections.
  # Note: the default number of connections is 1024 for postgres of harbor.
  max_open_conns: 900

# The default data volume
data_volume: /data

# Harbor Storage settings by default is using /data dir on local filesystem
# Uncomment storage_service setting If you want to using external storage
# storage_service:
#   # ca_bundle is the path to the custom root ca certificate, which will be injected into the truststore
#   # of registry's and chart repository's containers.  This is usually needed when the user hosts a internal storage with self signed certificate.
#   ca_bundle:

#   # storage backend, default is filesystem, options include filesystem, azure, gcs, s3, swift and oss
#   # for more info about this configuration please refer https://docs.docker.com/registry/configuration/
#   filesystem:
#     maxthreads: 100
#   # set disable to true when you want to disable registry redirect
#   redirect:
#     disabled: false

# Trivy configuration
#
# Trivy DB contains vulnerability information from NVD, Red Hat, and many other upstream vulnerability databases.
# It is downloaded by Trivy from the GitHub release page https://github.com/aquasecurity/trivy-db/releases and cached
# in the local file system. In addition, the database contains the update timestamp so Trivy can detect whether it
# should download a newer version from the Internet or use the cached one. Currently, the database is updated every
# 12 hours and published as a new release to GitHub.
trivy:
  # ignoreUnfixed The flag to display only fixed vulnerabilities
  ignore_unfixed: false
  # skipUpdate The flag to enable or disable Trivy DB downloads from GitHub
  #
  # You might want to enable this flag in test or CI/CD environments to avoid GitHub rate limiting issues.
  # If the flag is enabled you have to download the `trivy-offline.tar.gz` archive manually, extract `trivy.db` and
  # `metadata.json` files and mount them in the `/home/scanner/.cache/trivy/db` path.
  skip_update: false
  #
  # insecure The flag to skip verifying registry certificate
  insecure: false
  # github_token The GitHub access token to download Trivy DB
  #
  # Anonymous downloads from GitHub are subject to the limit of 60 requests per hour. Normally such rate limit is enough
  # for production operations. If, for any reason, it's not enough, you could increase the rate limit to 5000
  # requests per hour by specifying the GitHub access token. For more details on GitHub rate limiting please consult
  # https://developer.github.com/v3/#rate-limiting
  #
  # You can create a GitHub token by following the instructions in
  # https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line
  #
  # github_token: xxx

jobservice:
  # Maximum number of job workers in job service
  max_job_workers: 10

notification:
  # Maximum retry count for webhook job
  webhook_job_max_retry: 10

chart:
  # Change the value of absolute_url to enabled can enable absolute url in chart
  absolute_url: disabled

# Log configurations
log:
  # options are debug, info, warning, error, fatal
  level: info
  # configs for logs in local storage
  local:
    # Log files are rotated log_rotate_count times before being removed. If count is 0, old versions are removed rather than rotated.
    rotate_count: 50
    # Log files are rotated only if they grow bigger than log_rotate_size bytes. If size is followed by k, the size is assumed to be in kilobytes.
    # If the M is used, the size is in megabytes, and if G is used, the size is in gigabytes. So size 100, size 100k, size 100M and size 100G
    # are all valid.
    rotate_size: 200M
    # The directory on your host that store log
    location: /var/log/harbor

  # Uncomment following lines to enable external syslog endpoint.
  # external_endpoint:
  #   # protocol used to transmit log to external endpoint, options is tcp or udp
  #   protocol: tcp
  #   # The host of external endpoint
  #   host: localhost
  #   # Port of external endpoint
  #   port: 5140

#This attribute is for migrator to detect the version of the .cfg file, DO NOT MODIFY!
_version: 2.4.0

# Uncomment external_database if using external database.
# external_database:
#   harbor:
#     host: harbor_db_host
#     port: harbor_db_port
#     db_name: harbor_db_name
#     username: harbor_db_username
#     password: harbor_db_password
#     ssl_mode: disable
#     max_idle_conns: 2
#     max_open_conns: 0
#   notary_signer:
#     host: notary_signer_db_host
#     port: notary_signer_db_port
#     db_name: notary_signer_db_name
#     username: notary_signer_db_username
#     password: notary_signer_db_password
#     ssl_mode: disable
#   notary_server:
#     host: notary_server_db_host
#     port: notary_server_db_port
#     db_name: notary_server_db_name
#     username: notary_server_db_username
#     password: notary_server_db_password
#     ssl_mode: disable

# Uncomment external_redis if using external Redis server
# external_redis:
#   # support redis, redis+sentinel
#   # host for redis: <host_redis>:<port_redis>
#   # host for redis+sentinel:
#   #  <host_sentinel1>:<port_sentinel1>,<host_sentinel2>:<port_sentinel2>,<host_sentinel3>:<port_sentinel3>
#   host: redis:6379
#   password:
#   # sentinel_master_set must be set to support redis+sentinel
#   #sentinel_master_set:
#   # db_index 0 is for core, it's unchangeable
#   registry_db_index: 1
#   jobservice_db_index: 2
#   chartmuseum_db_index: 3
#   trivy_db_index: 5
#   idle_timeout_seconds: 30

# Uncomment uaa for trusting the certificate of uaa instance that is hosted via self-signed cert.
# uaa:
#   ca_file: /path/to/ca

# Global proxy
# Config http proxy for components, e.g. http://my.proxy.com:3128
# Components doesn't need to connect to each others via http proxy.
# Remove component from `components` array if want disable proxy
# for it. If you want use proxy for replication, MUST enable proxy
# for core and jobservice, and set `http_proxy` and `https_proxy`.
# Add domain to the `no_proxy` field, when you want disable proxy
# for some special registry.
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy

# metric:
#   enabled: false
#   port: 9090
#   path: /metrics

# Trace related config
# only can enable one trace provider(jaeger or otel) at the same time,
# and when using jaeger as provider, can only enable it with agent mode or collector mode.
# if using jaeger collector mode, uncomment endpoint and uncomment username, password if needed
# if using jaeger agetn mode uncomment agent_host and agent_port
# trace:
#   enabled: true
#   # set sample_rate to 1 if you wanna sampling 100% of trace data; set 0.5 if you wanna sampling 50% of trace data, and so forth
#   sample_rate: 1
#   # # namespace used to differenciate different harbor services
#   # namespace:
#   # # attributes is a key value dict contains user defined attributes used to initialize trace provider
#   # attributes:
#   #   application: harbor
#   # # jaeger should be 1.26 or newer.
#   # jaeger:
#   #   endpoint: http://hostname:14268/api/traces
#   #   username:
#   #   password:
#   #   agent_host: hostname
#   #   # export trace data by jaeger.thrift in compact mode
#   #   agent_port: 6831
#   # otel:
#   #   endpoint: hostname:4318
#   #   url_path: /v1/traces
#   #   compression: false
#   #   insecure: true
#   #   timeout: 10s

执行安装脚本

​ 在harbor默认安装,是不包含trivy、notary、chartmuseum这些服务支持的。但安装脚本支持这些服务可以与harbor一起安装并完成配置

​ 如果需要harbor支持trivy、notary、chartmuseum这些服务支持,那么可以在运行脚本时使用–with参数。例如支持trivy,命令如下

./intstall.sh --with-trivy

​ 如果要同时安装notary和chartmuseum服务,请在同一命令中指定所有参数

./install.sh --with-notary --with-trivy --with-chartmuseum
# 执行安装脚本
[root@docker harbor]# ./install.sh --with-notary --with-trivy --with-chartmuseum

# 查看harbor状态
[root@docker harbor]# docker-compose ps
      Name                     Command               State            Ports                                         
------------------------------------------------------------------------------------------------------
chartmuseum         ./docker-entrypoint.sh           Up                                                                                             
harbor-core         /harbor/entrypoint.sh            Up                                                                                             
harbor-db           /docker-entrypoint.sh 96 13      Up                                                                                             
harbor-jobservice   /harbor/entrypoint.sh            Up                                                                                             
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up      127.0.0.1:1514->10514/tcp                                                              
harbor-portal       nginx -g daemon off;             Up                                                                                             
nginx               nginx -g daemon off;             Up      0.0.0.0:4443->4443/tcp,:::4443->4443/tcp, 0.0.0.0:80->8080/tcp,:::80->8080/tcp,        
                                                             0.0.0.0:443->8443/tcp,:::443->8443/tcp                                                 
notary-server       /bin/sh -c migrate-patch - ...   Up                                                                                             
notary-signer       /bin/sh -c migrate-patch - ...   Up                                                                                             
redis               redis-server /etc/redis.conf     Up                                                                                             
registry            /home/harbor/entrypoint.sh       Up                                                                                             
registryctl         /home/harbor/start.sh            Up                                                                                             
trivy-adapter       /home/scanner/entrypoint.sh      Up 

# 启动harbor
[root@docker harbor]# docker-compose -f docker-compose.yml up -d

# 关闭harbor
[root@docker harbor]# docker-compose -f docker-compose.yml down

登录Habor

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Docker中安装xxl-job2.4.1,可以按照以下步骤进行操作: 1. 首先,确保已经安装了Docker,并且可正常运行。 2. 打开终端,运行以下命令来拉取xxl-job的镜像: ``` docker pull xxl-job:2.4.1 ``` 这将下载xxl-job2.4.1的Docker镜像。 3. 创建并运行一个名为xxl-job的容器,可以使用以下命令: ``` docker run -d --name xxl-job -p 10010:10010 -v /usr/local/docker/xxl-job/log:/data/applogs xxl-job:2.4.1 ``` 这将在后台运行一个名为xxl-job的容器,并将主机的10010端口映射到容器的10010端口。还将容器内的日志目录挂载到主机的/usr/local/docker/xxl-job/log目录。 4. 确保服务器已经安装了MySQL数据库,如果没有安装,可以在服务器的Docker中安装一个MySQL实例。具体操作可以参考xxl-job项目自带的文档和SQL建表语句。 5. 最后,将xxl-job的jar包(test-xxl-job)放在与xxl-job相同的服务器Docker中进行部署部署过程与上述部署xxl-job类似,只需将jar包名改为test-xxl-job即可。 这样,就完成了在Docker中安装xxl-job2.4.1的过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [xxl-job整合 docker 部署](https://blog.csdn.net/m0_65775063/article/details/130881526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺仔_牛奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值