首页 > 其他分享 >【Docker】Harbor 私有仓库和管理

【Docker】Harbor 私有仓库和管理

时间:2024-10-17 08:52:54浏览次数:10  
标签:Harbor 私有 registry 镜像 harbor Docker docker

目录

一、搭建本地私有仓库

二、harbor简介(特性、构成、架构的数据流向)

2.1 什么是Harbor

2.2 Harbor的特性

2.3 Harbor的构成

2.4 Harbor的工作原理(运行流程) 

三、harbor部署以及配置文件

1. 部署 Docker-Compose 服务

2. 部署 Harbor 服务

 3. 启动 Harbor

4. 查看 Harbor 启动镜像

5. 创建一个新项目

6. 在其他客户端上传镜像

四、如何去运维管理 harbor 项目

1. 通过 Harbor Web 创建项目

2. 创建 Harbor 用户

(1)创建用户并分配权限

(2)添加项目成员

(3)在客户端上使用普通账户操作镜像

3. 查看日志

4. 修改 Harbor.cfg 配置文件

5. 移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移

6. 如需重新部署,需要移除 Harbor 服务容器全部数据


一、搭建本地私有仓库

#首先下载 registry 镜像
docker pull registry

#在 daemon.json 文件中添加私有镜像仓库地址
vim /etc/docker/daemon.json
{
  "insecure-registries": ["192.168.10.23:5000"],						#添加,注意用逗号结尾
  "registry-mirrors": ["https://ae3f5qei.mirror.aliyuncs.com"]
}

systemctl restart docker.service

#运行 registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest

-itd:在容器中打开一个伪终端进行交互操作,并在后台运行
-v:把宿主机的/data/registry目录绑定到容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了
--restart=always:这是重启的策略,在容器退出时总是重启容器
--name registry:创建容器命名为registry
registry:latest:这个是刚才pull下来的镜像

Docker容器的重启策略如下:
no:默认策略,在容器退出时不重启容器
on-failure:在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3 :在容器非正常退出时重启容器,最多重启3次
always:在容器退出时总是重启容器
unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

#为镜像打标签
docker tag centos:7 192.168.10.23:5000/centos:v1

#上传到私有仓库
docker push 192.168.10.23:5000/centos:v1

#列出私有仓库的所有镜像
curl http://192.168.10.23:5000/v2/_catalog

#出私有仓库的 centos 镜像有哪些tag
curl http://192.168.10.23:5000/v2/centos/tags/list

#先删除原有的 centos 的镜像,再测试私有仓库下载
docker rmi -f 8652b9f0cb4c
docker pull 192.168.10.23:5000/centos:v1

二、harbor简介(特性、构成、架构的数据流向)

2.1 什么是Harbor

  • Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务
  • Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文
  • Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。用于部署 Harbor 的 docker-compose 模板位于 harbor/docker-compose.yml

简单来说:harbor 是一个开源的云原生镜像仓库,它允许用户存储、签名和分发docker镜像(镜像存储(仓库))

2.2 Harbor的特性

  • 基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限
  • 基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)
  • 支持 LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理
  • 镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间
  • 图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理
  • 审计管理:所有针对镜 像仓库的操作都可以被记录追溯,用于审计管理
  • 支持 RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易
  • Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板

2.3 Harbor的构成

Harbor 在架构上总共有七个组件,主要有六个组件一般来说我们说六个组件

  • Proxy
  • Registry
  • Core services
  • Database(Harbor-db)
  • Log collector(Harbor-log)
  • Job services
  • harbor-adminserver

Proxy

是一个 nginx 的前端代理,Harbor 的 Registry、UI、Token 服务等组件,都处在 nginx 反向代理后边。 该代理将来自浏览器、docker clients 的请求转发到后端不同的服务上

简单来说:通过一个前置的反向代理,接受(浏览器)客户端请求,并且转发到你的后端,不同的服务

Registry:

负责储存 Docker 镜像,并处理 Docker push/pull 命令。由于要对用户进行访问控制,即不同用户对 Docker 镜像 有不同的读写权限,Registry 会指向一个 Token 服务,强制用户的每次 Docker pull/push 请求都要携带一个合法的 Token, Registry 会通过公钥对 Token 进行解密验证

简单来说:负责镜像存储,通过pull/push上传下

补充:认证方式有三种

  • 令牌
  • 用户密码
  • ssl

Core services: Harbor的核心功能,主要提供以下3个服务:

  • UI(harbor-ui): 提供图形化界面,帮助用户管理 Registry 上的镜像(image), 并对用户进行授权。
  • WebHook:为了及时获取Registry上image 状态变化的情况,在Registry 上配置 Webhook,把状态变化传递给 UI 模块。
  • Token 服务:负责根据用户权限给每个 Docker push/pull 命令签发 Token。Docker 客户端向 Registry 服务发起的请求, 如果不包含 Token,会被重定向到 Token 服务,获得 Token 后再重新向 Registry 进行请求

简单来说:

  • webhook:负责网站一些服务功能(内部所有状态转发到页面)
  • UI:显示视图化界面
  • token:令牌、认证服务(身份认证)

Database(harbor-db):

为core services提供数据库服务,负责储存用户权限、审计日志、Docker 镜像分组信息等数据。

Job services:

主要用于镜像复制,本地镜像可以被同步到远程 Harbor 实例上

Log collector(harbor-log):

负责收集其他组件的日志到一个地方

  • Harbor 的每个组件都是以 Docker 容器的形式构建的,因此,使用 Docker Compose 来对它进行部署
  • 总共分为7个容器运行,通过在docker-compose.yml所在目录中执行 docker-compose ps 命令来查看, 名称分别为:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log
  • 其中 harbor-adminserver 主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui 所要操作的所有数据都通过 harbor-adminserver 这样一个数据配置管理中心来完成

2.4 Harbor的工作原理(运行流程) 

  • 所有的请求(认为客户端所操作的信息)提交给Proxy(反向代理)
  • Proxy会请求后端转发给Core services(核心服务:UI、webhook、woken服务)获取相应的权限
  • 再将这些信息转发到Registry(镜像存储,如果需上传下载镜像存储中的内容,则需相应的令牌或者权限)
  • 在Core services和Registry中进行的操作会生成相应的日志会存储到database(镜像所有的操作日志以及存储信息)
  • Core service、Registry和database会通过job services同步到另外的一个私有仓库当中
  • Log Collector则会收集各个组件的操作日志

三、harbor部署以及配置文件

Harbor服务器192.17.20.100docker-ce、docker-compose、harbor-offline-v1.2.2
client服务器192.17.20.106docker-ce

1. 部署 Docker-Compose 服务
 

//下载或者上传 Docker-Compose
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose --version


下载地址
官方网站:https://goharbor.io/
         https://github.com/goharbor/harbor/releases

2. 部署 Harbor 服务

(1)下载或上传 Harbor 安装程序
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz

tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/


(2)修改harbor安装的配置文件
vim /usr/local/harbor/harbor.cfg
--5行--修改,设置为Harbor服务器的IP地址或者域名
hostname = 192.168.10.23
--59行--指定管理员的初始密码,默认的用户名/密码是admin/Harbor12345
harbor_admin_password = Harbor12345

 

 

关于 Harbor.cfg 配置文件中有两类参数:所需参数和可选参数

所需参数:这些参数需要在配置文件 Harbor.cfg 中设置。如果用户更新它们并运行 install.sh 脚本重新安装 Harbor(安装前进行设置,否则不生效)参数将生效

具体参数如下:

  • hostname:用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限定的域名(FQDN),例如 192.168.10.23 或 hub.kgc.cn。不要使用 localhost 或 127.0.0.1 为主机名。
  • ui_url_protocol:(http 或 https,默认为 http)用于访问 UI 和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为 https。
  • max_job_workers:镜像复制作业线程。
  • db_password:用于db_auth 的MySQL数据库root 用户的密码。
  • customize_crt:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为 off。
  • ssl_cert:SSL 证书的路径,仅当协议设置为 https 时才应用。
  • secretkey_path:用于在复制策略中加密或解密远程 register 密码的密钥路径。

可选参数:这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动 Harbor 后在 Web UI 上进行更新。如果进入 Harbor.cfg,只会在第一次启动 Harbor 时生效,随后对这些参数的更新,Harbor.cfg 将被忽略

注意:如果选择通过 UI 设置这些参数,请确保在启动 Harbor 后立即执行此操作。具体来说,必须在注册或在 Harbor 中创建任何新用户之前设置所需的 auth_mode。当系统中有用户时(除了默认的 admin 用户), auth_mode 不能被修改。

具体参数如下:

  • Email:Harbor 需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才启用。请注意,在默认情况下 SSL 连接时没有启用。如果 SMTP 服务器需要 SSL,但不支持 STARTTLS,那么应该通过设置启用 SSL email_ssl = TRUE。
  • harbor_admin_password:管理员的初始密码,只在 Harbor 第一次启动时生效。之后, 此设置将被忽略,并且应在 UI 中设置管理员的密码。请注意,默认的用户名/密码是admin/Harbor12345。
  • auth_mode:使用的认证类型,默认情况下,它是 db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为 ldap_auth。
  • self_registration:启用/禁用用户注册功能。禁用时,新用户只能由 Admin 用户创建,只有管理员用户可以在 Harbor 中创建新用户。注意:当 auth_mode 设置为 ldap_auth 时,自注册功能将始终处于禁用状态,并且该标志被忽略。
  • Token_expiration:由令牌服务创建的令牌的到期时间(分钟),默认为 30 分钟。
  • project_creation_restriction:用于控制哪些用户有权创建项目的标志。默认情况下,每个人都可以创建一个项目。 如果将其值设置为“adminonly”,那么只有 admin 可以创建项目。
  • verify_remote_cert:打开或关闭,默认打开。此标志决定了当Harbor与远程 register 实例通信时是否验证 SSL/TLS 证书。 将此属性设置为 off 将绕过 SSL/TLS 验证,这在远程实例具有自签名或不可信证书时经常使用。

另外,默认情况下,Harbor 将镜像存储在本地文件系统上。在生产环境中,可以考虑 使用其他存储后端而不是本地文件系统,如 S3、Openstack Swif、Ceph 等对象存储。但需要更新 common/templates/registry/config.yml 文件。
Harbor的默认镜像存储路径在 /data/registry 目录下,映射到docker容器里面的 /storage 目录下。
这个参数是在 docker-compose.yml 中指定的,在 docker-compose up -d 运行之前修改。
如果希望将 Docker 镜像存储到其他的磁盘路径,可以修改这个参数。

 3. 启动 Harbor

cd /usr/local/harbor/
在配置好了 harbor.cfg 之后,执行 ./prepare 命令,为 harbor 启动的容器生成一些必要的文件(环境)
再执行命令 ./install.sh 以 pull 镜像并启动容器

补充:问题

①如果因为压缩包版本问题导致没有harbor.cfg的配置文件

解决方法:根据harbor.yml.tmpl的配置文件进行相应更改,并改名harbor.yml

出现以上报错

解决方法:

1):

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /path/to/your/private.key \ -out /path/to/your/certificate.crt

根据以上命令生成生成一个自签名证书,将生成的证书和私钥路径更新到harbor.yml 文件中

https:

port: 443

certificate: /path/to/your/certificate.crt

private_key: /path/to/your/private.key

2):可以选择禁用HTTPS

http:

port: 80

# 注释掉 https 部分或将其禁用

# https: # port: 443

# certificate: /path/to/your/certificate.crt

# private_key: /path/to/your/private.key

出现以上报错表示:

这个错误意味着 Docker 中已经有一个名为 /registry 的容器在运行,所以当你再次尝试启动 registry 容器时,Docker 报出了冲突错误

解决方法:找到相应容器停止并删除,重新启动 Harbor

 

4. 查看 Harbor 启动镜像

cd /usr/local/harbor/
docker-compose ps

5. 创建一个新项目

(1)浏览器访问:http://192.17.20.100 登录 Harbor WEB UI 界面,默认的管理员用户名和密码是 admin/Harbor12345

(2)输入用户名和密码登录界面后可以创建一个新项目。点击“+项目”按钮

(3)填写项目名称为“myproject-kgc”,点击“确定”按钮,创建新项目

(4)此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,Registry 服务器在端口 80 上侦听。
//登录 Harbor
docker login [-u admin -p Harbor12345] http://127.0.0.1

//下载镜像进行测试
docker pull nginx

//将镜像打标签
格式:docker tag 镜像:标签  仓库IP/项目名称/镜像名:标签
docker tag nginx:latest 127.0.0.1/myproject-kgc/nginx:v1

//上传镜像到 Harbor
docker push 127.0.0.1/myproject-kgc/nginx:v1

(5)在 Harbor 界面 myproject-kgc 目录下可看见此镜像及相关信息

 

6. 在其他客户端上传镜像
 

以上操作都是在 Harbor 服务器本地操作。如果其他客户端登录到 Harbor,就会报如下错误。出现这问题的原因为Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。

docker login -u admin -p Harbor12345 http://192.17.20.100
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.10.23/v2/: dial tcp 192.17.20.100:443: connect: connection refused

(1)在 Docker 客户端配置操作
//解决办法是:在 Docker server 启动的时候,增加启动参数,默认使用 HTTP 访问。
vim /usr/lib/systemd/system/docker.service
--13行--修改
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.17.20.100 --containerd=/run/containerd/containerd.sock
或
ExecStart=/usr/bin/dockerd --insecure-registry 192.17.20.100

//重启 Docker,再次登录
systemctl daemon-reload
systemctl restart docker

//再次登录 Harbor
docker login -u admin -p Harbor12345 http://192.17.20.100
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Login Succeeded
//将自动保存凭据到/root/.docker/config.json,下次登录时可直接使用凭据登录 Harbor

//下载镜像进行测试
docker pull 192.17.20.100/myproject-kgc/nginx:v1

//上传镜像进行测试
docker pull cirros
docker tag cirros:latest 192.17.20.100/myproject-kgc/cirros:v2
docker push 192.17.20.100/myproject-kgc/cirros:v2

(2)刷新 Harbor 的 Web 管理界面进行查看,会发现 myproject-kgc 项目里面有两个镜像

解决:

四、如何去运维管理 harbor 项目

1. 通过 Harbor Web 创建项目

  • 在 Harbor 仓库中,任何镜像在被 push 到 regsitry 之前都必须有一个自己所属的项目。
  • 单击“+项目”,填写项目名称,项目级别若设置为"私有",则不勾选。如果设置为公共仓库,则所有人对此项目下的镜像拥有读权限,命令行中不需要执行"Docker login"即可下载镜像,镜像操作与 Docker Hub 一致。

2. 创建 Harbor 用户

(1)创建用户并分配权限

  • 在 Web 管理界面中单击系统管理 -> 用户管理 -> +用户,
  • 填写用户名为“kgc-zhangsan”,邮箱为“[email protected]”,全名为“zhangsan”,密码为“Abc123456”,注释为“管理员”(可省略)。
  • 附:用户创建成功后,单击左侧“...”按钮可将上述创建的用户设置为管理员角色或进行删除操作,本例不作任何设置。

(2)添加项目成员

  • 单击项目 -> myproject-kgc-> 成员 -> + 成员,填写上述创建的用户 kgc-zhangsan 并分配角色为“开发人员”。
  • 附:此时单击左侧“...”按钮仍然可对成员角色进行变更或者删除操作

(3)在客户端上使用普通账户操作镜像

//删除上述打标签的本地镜像
docker rmi 192.168.10.23/myproject-kgc/cirros:v2

//先退出当前用户,然后使用上述创建的账户 kgc-zhangsan 登录
docker logout 192.168.10.23

docker login 192.168.10.23
或
docker login -u kgc-zhangsan -p Abc123456 http://192.168.10.23

//下载和上传镜像进行测试
docker pull 192.168.10.23/myproject-kgc/cirros:v2

docker tag cirros:latest 192.168.10.23/myproject-kgc/cirros:v3
docker push 192.168.10.23/myproject-kgc/cirros:v3

3. 查看日志

Web 界面日志,操作日志按时间顺序记录用户相关操作

4. 修改 Harbor.cfg 配置文件

要更改 Harbor的配置文件中的可选参数时,请先停止现有的 Harbor实例并更新 Harbor.cfg;然后运行 prepare 脚本来填充配置; 最后重新创建并启动 Harbor 的实例

使用 docker-compose 管理 Harbor 时,必须在与 docker-compose.yml 相同的目录中运行。
cd /usr/local/harbor
docker-compose down -v

vim harbor.cfg			#只能修改可选参数

./prepare

docker-compose up -d
//如果有以下报错,需要开启防火墙 firewalld 服务解决
Creating network "harbor_harbor" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-b53c314f45e8 -j RETURN: iptables: No chain/target/match by that name.
 (exit status 1))

systemctl restart firewalld.service
docker-compose up -d

5. 移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移

//在Harbor服务器上操作
(1)移除 Harbor 服务容器
cd /usr/local/harbor
docker-compose down -v

(2)把项目中的镜像数据进行打包
//持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的/var/log/Harbor/目录下
ls /data/registry/docker/registry/v2/repositories/myproject-kgc
cd /data/registry/docker/registry/v2/repositories/myproject-kgc
tar zcvf kgc-registry.tar.gz ./*

6. 如需重新部署,需要移除 Harbor 服务容器全部数据

cd /usr/local/harbor
docker-compose down -v
rm -r /data/database
rm -r /data/registry

标签:Harbor,私有,registry,镜像,harbor,Docker,docker
From: https://blog.csdn.net/qq_63994746/article/details/142980617

相关文章

  • Docker
    什么是DockerDocker是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包到一个轻量级的、独立的容器中,并可以在任何环境中运行。容器通过共享主机操作系统的内核,具有更高的性能和效率,与虚拟机相比,消耗更少的资源。Docker提供了一种标准化的方式来构建、运行和管理应用程......
  • Docker入门实践(六)
    环境VMwareWorkstationProubuntu-23.04构建镜像了解镜像层实现原理完成下载的层被提取到主机系统特定的目录。当你从镜像启动一个容器,会按特定顺序将所有层堆叠起来组成一个统一的文件系统。当容器启动,使用chroot设置容器的根目录为这个统一文件系统的路径。当统一文......
  • Docker实践与应用举例
    Docker实践与应用举例1.Docker简介1.1什么是Docker?Docker是一种开源的容器化平台,用于简化应用程序的开发、部署和运行。容器化是将应用程序及其依赖打包在一起,在任何支持Docker的环境中运行,确保应用程序在开发、测试、生产环境的一致性。1.2Dockervs虚拟机虽然Doc......
  • 敏捷转型中的敏捷实践:Leangoo领歌scrum工具私有部署解决方案
    近年来,敏捷开发逐渐成为企业项目管理中的热门话题。无论是互联网公司还是传统制造业,越来越多的企业通过敏捷方法,提升了项目的交付效率和团队的协作能力。在这个背景下,如何选择合适的敏捷管理工具,并确保其安全性和灵活性,成为了不少企业关注的焦点。 很多团队在讨论敏捷实践时,会......
  • shell脚本自动选择空间最大的目录安装docker
    #!/bin/bash#二进制包安装docker-xy.xy.x-ce#变量unamer=`uname-r|cut-d'.'-f1-2`Max_Space=$(df|grep"^/dev"|sort-rn-k2|head-1|awk'{print$6}')Registry="mirror.eastraycloud.com:8665"#判断当前系统类型Unamer=$(uname-v|......
  • 基于cloudreve(Docker应用)搭建网盘服务,用于目录的分享和在线预览。
    文章目录I基于cloudreve(Docker应用)搭建网盘服务安装主要功能设置角色最大容量II知识扩展:网盘类的文件预览需求背景:iOS可以直接预览PDF等常见格式文件,但是Android浏览器需要先下载文件,才能查看文件内容,因此需要搭建支持目录的分享和在线预览的Min......
  • centos离线安装docker,docker-compose
    安装环境操作系统:Centos7.99内核版本:3.10.0-1160.el7.x86_64安装用户:rootdocker离线安装1下载压缩包官网下载地址:https://download.docker.com/linux/static/stable/x86_64/这里默认选择最新版本(26.0.2)。2上传压缩包并解压tarzxvfdocker-26.0.2.tgz3......
  • Docker Compose部署GitLab
    今天我将向你展示如何在一小时内安装GitLab服务器,并在其中运行第一个CI/CD进程。本文是“如何开始使用流行的CI/CD工具”系列文章的一部分。在本文中,我将向你展示如何安装CI/CD工具,以及如何准备基于Maven构建和测试一个简单项目的流程。什么是GitLab?Gitlab是一款......
  • docker如何建立本地私有仓库,并将docker镜像推到私有仓库
    在Docker中,您可以通过DockerRegistry创建本地私有仓库,并将Docker镜像推送到这个私有仓库。以下是具体步骤:步骤1:启动一个本地Docker私有仓库拉取registry镜像:Docker官方提供了一个registry镜像,可以用来运行私有仓库。首先,您需要从DockerHub拉取这个镜......
  • DolphinScheduler快速上手:基于Docker Compose的安装与配置全攻略
    DolphinScheduler是一款强大的开源分布式任务调度系统,广泛应用于大数据领域,用于管理复杂的工作流。本文将详细介绍如何通过DockerCompose安装和配置DolphinScheduler,以便快速搭建并使用这一系统。1.环境准备首先,确保你的系统已经安装了Docker和DockerCompose。Docker......