在实际数据仓库和实时分析项目中Apache Doris 凭借其高性能、易用性和兼容 MySQL 协议的特性成为许多团队处理海量数据查询的首选。然而从源码编译部署 Doris 往往涉及复杂的依赖管理和环境配置对于希望快速验证功能或搭建开发测试环境的开发者来说这个过程耗时且容易出错。Docker 容器化技术则提供了一种标准、隔离且可复现的部署方式能够将 Doris 及其依赖打包成一个随时可运行的镜像极大地简化了部署流程。本文将带你完成从零开始使用 Docker 部署一个单机版 Apache Doris 集群的完整过程。无论你是数据分析师、后端开发还是运维工程师只要对 Docker 有基本了解就能按照步骤搭建起一个可用的 Doris 环境。我们将涵盖从 Docker 环境准备、拉取镜像、启动容器、到连接数据库、执行简单 SQL 验证的每一个环节并重点解释关键配置参数的含义。最后我们还会探讨在生产环境中使用 Docker 部署 Doris 需要考虑的持久化、网络、监控等高级话题以及部署过程中可能遇到的典型问题及其排查方法。1. 理解 Docker 部署 Doris 的优势与架构在直接动手操作之前有必要先理解为什么选择 Docker 来部署 Doris以及这种部署方式背后的基本架构这有助于你在后续配置和排错时做出正确的判断。1.1 为什么选择 Docker 而非传统部署传统部署 Apache Doris 需要你在目标服务器上手动安装 Java 运行环境解决各种系统库依赖如 GCC、CMake 等用于 FE/BE 编译并仔细配置多个配置文件如 fe.conf, be.conf。这个过程对新手不友好且在不同 Linux 发行版上可能遇到不同的问题。Docker 部署的核心优势在于环境标准化和依赖隔离。通过 Docker你可以直接获取一个包含了正确版本 JDK、系统库以及预配置 Doris 的完整镜像。这个镜像在任何安装了 Docker 的机器上都能以相同的方式运行彻底消除了“在我机器上是好的”这类环境问题。对于学习、功能验证、开发测试而言你可以在几分钟内获得一个干净的 Doris 实例用完后直接删除容器不留任何痕迹。1.2 单机 Docker 部署的架构模型为了简化入门我们通常从单机部署开始。在单机模式下我们会启动两个 Docker 容器Doris FE (Frontend) 容器负责元数据管理、集群管理、用户认证和接收 SQL 查询请求。它是整个集群的“大脑”和入口。Doris BE (Backend) 容器负责数据存储、查询计划执行。它是实际干活的“肌肉”。尽管它们运行在同一个物理机上的不同容器中但通过网络互联BE 容器能够向 FE 容器进行心跳注册形成一个逻辑上的 Doris 集群。这种部署方式清晰地区分了 FE 和 BE 的角色便于理解 Doris 的组件分工。注意生产环境的高可用部署需要多个 FE 和 BE 实例并且需要考虑数据持久化、资源限制和网络规划。本文的单机部署是学习和测试的起点。1.3 核心概念镜像、容器、端口与数据卷镜像 (Image)一个只读的模板包含了运行 Doris 所需的操作系统、软件和配置。我们将使用官方或社区维护的 Doris Docker 镜像。容器 (Container)镜像的运行实例。你可以创建、启动、停止、删除容器。每个 FE 和 BE 都将运行在一个独立的容器中。端口映射 (Port Mapping)容器内部的服务端口如 FE 的 9030, 8030需要映射到宿主机的端口这样宿主机上的客户端如 MySQL 客户端才能访问容器内的服务。数据卷 (Volume)容器内的数据默认是临时的容器删除后数据会丢失。通过挂载数据卷可以将容器内的重要目录如 Doris 的数据存储目录/opt/apache-doris/be/storage持久化到宿主机的文件系统上。理解这些概念是后续进行正确配置和故障排查的基础。2. 部署前的环境准备与检查一个稳定的 Docker 环境是成功部署的前提。本节将指导你完成 Docker 的安装与基础配置并检查环境是否满足运行 Doris 的最低要求。2.1 安装与验证 Docker 环境Docker 的安装方式因操作系统而异。以下以常见的 Linux 发行版如 Ubuntu/CentOS和 macOS 为例。对于 Ubuntu/Debian 系统# 1. 更新软件包索引并安装必要工具 sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg lsb-release # 2. 添加 Docker 官方 GPG 密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 3. 设置稳定版仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 4. 安装 Docker Engine sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # 5. 启动 Docker 服务并设置开机自启 sudo systemctl start docker sudo systemctl enable docker对于 CentOS/RHEL 系统# 1. 卸载旧版本 sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine # 2. 安装 yum-utils 并设置仓库 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 3. 安装 Docker Engine sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # 4. 启动 Docker 服务并设置开机自启 sudo systemctl start docker sudo systemctl enable docker对于 macOS推荐使用 Docker Desktop for Mac。从 Docker 官网下载.dmg安装包双击安装并启动即可。Docker Desktop 会自动管理虚拟化和服务。验证安装安装完成后运行以下命令验证 Docker 是否安装成功并检查版本。# 查看 Docker 版本信息 docker --version # 运行一个测试容器验证 Docker 引擎是否正常工作 docker run hello-world如果hello-world容器能成功运行并输出欢迎信息说明 Docker 环境基本正常。2.2 配置 Docker 镜像加速器从 Docker Hub 拉取镜像时国内网络可能较慢。配置镜像加速器可以显著提升拉取速度。Linux 系统配置编辑或创建/etc/docker/daemon.json文件如果不存在的话sudo tee /etc/docker/daemon.json -EOF { “registry-mirrors”: [ “https://docker.mirrors.ustc.edu.cn“, “https://hub-mirror.c.163.com“ ] } EOF然后重启 Docker 服务使配置生效sudo systemctl daemon-reload sudo systemctl restart dockerDocker Desktop (macOS/Windows) 配置在 Docker Desktop 的设置Settings中找到 Docker Engine 选项在配置文件中添加registry-mirrors字段内容同上然后点击“Apply Restart”。2.3 检查系统资源Apache Doris 对内存有一定要求。单机测试环境下建议宿主机至少拥有4GB 可用内存。你可以使用以下命令检查# Linux/Mac 查看内存 free -h如果内存不足Doris BE 进程可能在启动时失败并出现Memory of BE is not enough相关的错误日志。此外确保宿主机有足够的磁盘空间建议 10GB 以上用于存储镜像和未来的数据。3. 拉取镜像与启动 Doris 集群环境准备就绪后我们就可以开始部署 Doris 了。我们将使用 Apache Doris 官方在 Docker Hub 上提供的镜像。3.1 拉取 Apache Doris 官方镜像Apache Doris 在 Docker Hub 上提供了不同版本的镜像标签通常对应 Doris 的发行版本号。我们选择相对稳定的版本例如2.0.4。# 拉取 Frontend (FE) 镜像 docker pull apache/doris:2.0.4-fe-x86_64 # 拉取 Backend (BE) 镜像 docker pull apache/doris:2.0.4-be-x86_64 # 查看已拉取的镜像 docker images | grep doris执行docker images后你应该能看到两个镜像REPOSITORY 为apache/dorisTAG 分别为2.0.4-fe-x86_64和2.0.4-be-x86_64。注意镜像的架构标签如x86_64、arm64需要与你的宿主机架构匹配。大多数服务器和个人电脑是x86_64架构。如果你在 Apple Silicon (M1/M2) Mac 上运行需要寻找或构建arm64架构的镜像否则可能无法运行。3.2 创建 Docker 网络为了让 FE 和 BE 容器能够通过容器名互相通信我们需要创建一个自定义的 Docker 网络。# 创建一个名为 doris-network 的桥接网络 docker network create doris-network # 查看网络是否创建成功 docker network ls | grep doris-network使用自定义网络的好处是容器之间可以使用容器名称作为主机名进行解析这比使用动态分配的 IP 地址更稳定、更易读。3.3 启动 Frontend (FE) 容器FE 是集群的协调者需要先启动。我们将它命名为doris-fe。docker run -d \ --name doris-fe \ --network doris-network \ -p 8030:8030 \ -p 9030:9030 \ -e FE_SERVERSfe1:172.20.80.2:9010 \ -e FE_ID1 \ apache/doris:2.0.4-fe-x86_64参数解释-d后台运行容器。--name doris-fe指定容器名为doris-fe后续 BE 容器将通过此名称连接它。--network doris-network将容器加入我们刚创建的网络。-p 8030:8030将容器内的 8030 端口HTTP 端口用于 Web UI 和某些 API映射到宿主机的 8030 端口。-p 9030:9030将容器内的 9030 端口MySQL 协议端口用于客户端连接映射到宿主机的 9030 端口。-e FE_SERVERSfe1:172.20.80.2:9010环境变量定义 FE 服务器列表。这里是单机部署我们定义了一个 FE 节点172.20.80.2是容器在doris-network网络中的典型 IP 段9010是 FE 内部 RPC 端口。这个 IP 需要根据容器实际 IP 调整更稳妥的做法是使用fe1:doris-fe:9010使用容器名但部分旧镜像可能不支持。我们先按此启动后续可通过日志确认。-e FE_ID1指定该 FE 节点的 ID单节点设为 1。启动后查看容器日志确认 FE 启动成功# 查看最后50行日志 docker logs --tail 50 doris-fe在日志中搜索success或start FE successfully等关键字。如果看到FE type: UNKNOWN然后很快变成FE type: LEADER说明 FE 已成功启动并自选举为 Leader。3.4 启动 Backend (BE) 容器FE 成功启动后我们再启动 BE 容器并让它向 FE 注册。docker run -d \ --name doris-be \ --network doris-network \ -p 8040:8040 \ -e FE_SERVERSfe1:172.20.80.2:9010 \ -e BE_ADDR172.20.80.3:9050 \ apache/doris:2.0.4-be-x86_64参数解释--name doris-be指定容器名为doris-be。-p 8040:8040将容器内的 8040 端口BE 的 HTTP 端口用于状态查看映射到宿主机的 8040 端口。-e FE_SERVERSfe1:172.20.80.2:9010告诉 BE 集群中 FE 的地址需要与启动 FE 时的值一致。-e BE_ADDR172.20.80.3:9050指定 BE 自身的地址和端口9050 是 BE 的 heartbeat service 端口。这里的 IP172.20.80.3是假设的 BE 容器 IP。关键问题如何确定容器的 IP上述命令中的 IP (172.20.80.2,172.20.80.3) 是假设的。在实际部署中更可靠的做法是让容器自动获取 IP并在启动脚本中传递主机名。但官方镜像的启动脚本可能依赖于这些环境变量。一个更简单且通用的方法是先启动 FE查看其 IP再用这个 IP 启动 BE。操作步骤如下启动 FE 容器不带BE_ADDR的 BE 先不启动。获取 FE 容器的 IP 地址docker inspect -f ‘{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}‘ doris-fe假设输出为172.20.0.2。使用获取到的 IP 启动 BE 容器并设置FE_SERVERS和BE_ADDRBE 的 IP 也需要获取但我们可以先启动再进入容器查看并调整或者对于测试BE_ADDR 可以暂时不设有些镜像能自动获取docker run -d \ --name doris-be \ --network doris-network \ -p 8040:8040 \ -e FE_SERVERSfe1:172.20.0.2:9010 \ apache/doris:2.0.4-be-x86_64对于许多社区维护的镜像BE_ADDR可以省略BE 会自动获取自己的 IP。3.5 将 BE 节点添加到 FE 集群容器启动后BE 并不会自动加入集群。我们需要通过 MySQL 客户端连接到 FE执行 SQL 命令来添加 BE 节点。首先获取 BE 容器的 IP 地址docker inspect -f ‘{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}‘ doris-be假设输出为172.20.0.3。然后使用 MySQL 客户端连接 FE。你可以使用宿主机上安装的mysql命令或者使用另一个临时 MySQL 客户端容器。# 方法一使用宿主机mysql客户端如果已安装 mysql -h 127.0.0.1 -P 9030 -uroot # 方法二使用临时MySQL客户端容器推荐无需本地安装 docker run -it --rm --network doris-network mysql:8.0 mysql -h doris-fe -P 9030 -uroot连接成功后你会看到 MySQL 的命令行提示符。执行以下 SQL 添加 BE 节点-- 添加 Backend 节点IP 和端口9050需要替换为你的 BE 容器实际信息 ALTER SYSTEM ADD BACKEND “172.20.0.3:9050”;执行成功后可以通过以下命令查看 BE 节点状态SHOW PROC ‘/backends’\G在返回的结果中关注Alive列。如果显示true并且LastHeartbeat时间是最新的说明 BE 节点已成功加入集群并心跳正常。4. 验证部署与基础操作集群搭建完成后我们需要进行一系列验证确保 Doris 可以正常工作。4.1 通过 Web UI 访问Apache Doris FE 提供了 Web 管理界面。在浏览器中访问http://宿主机IP:8030。默认用户名root密码空直接点击登录登录后你可以看到集群的整体状态包括 FE、BE 节点的存活状态、表数量、查询统计等信息。这是一个非常直观的集群健康检查方式。4.2 通过 MySQL 客户端执行 SQL我们通过执行一些基础的 SQL 来验证 Doris 的数据库功能是否正常。-- 1. 查看现有数据库 SHOW DATABASES; -- 2. 创建一个测试数据库 CREATE DATABASE test_db; USE test_db; -- 3. 创建一张测试表使用Duplicate Key模型最简单的模型 CREATE TABLE IF NOT EXISTS test_table ( user_id INT, date DATE, city VARCHAR(20), age SMALLINT, cost DECIMAL(10, 2) ) DUPLICATE KEY(user_id, date) -- 指定排序列 DISTRIBUTED BY HASH(user_id) BUCKETS 10 -- 分桶方式 PROPERTIES ( “replication_num” “1” -- 副本数单机部署只能为1 ); -- 4. 向表中插入测试数据 INSERT INTO test_table VALUES (1001, ‘2023-10-01‘, ‘北京‘, 25, 150.50), (1002, ‘2023-10-01‘, ‘上海‘, 30, 200.00), (1001, ‘2023-10-02‘, ‘北京‘, 25, 80.00), (1003, ‘2023-10-01‘, ‘广州‘, 28, 300.00); -- 5. 查询数据 SELECT * FROM test_table ORDER BY user_id, date; -- 6. 执行一个带聚合的查询 SELECT city, SUM(cost) as total_cost, AVG(age) as avg_age FROM test_table GROUP BY city;如果以上 SQL 都能成功执行并返回预期结果恭喜你一个基于 Docker 的 Apache Doris 单机集群已经部署并运行成功4.3 关键目录与数据持久化探讨了解容器内 Doris 的关键目录对于排查问题和规划生产部署至关重要。你可以进入容器内部查看# 进入 FE 容器 docker exec -it doris-fe /bin/bash # 关键目录 # /opt/apache-doris/fe/doris-meta/ # FE元数据目录 # /opt/apache-doris/fe/log/ # FE日志目录 # 进入 BE 容器 docker exec -it doris-be /bin/bash # 关键目录 # /opt/apache-doris/be/storage/ # BE数据存储目录 # /opt/apache-doris/be/log/ # BE日志目录重要提醒默认情况下这些目录中的数据都保存在容器内部的可写层。如果删除容器所有数据包括创建的数据库、表和数据都会丢失。这对于测试无所谓但对于需要保留数据的场景是灾难性的。如何实现数据持久化在生产环境或需要保留数据的测试中必须使用 Docker 数据卷Volume或绑定挂载Bind Mount将关键目录挂载到宿主机。示例启动带数据持久化的容器# 1. 在宿主机创建目录用于持久化 mkdir -p /opt/docker-volumes/doris/fe-{meta,log} mkdir -p /opt/docker-volumes/doris/be-{storage,log} # 2. 启动 FE 容器带数据卷 docker run -d \ --name doris-fe \ --network doris-network \ -p 8030:8030 -p 9030:9030 \ -v /opt/docker-volumes/doris/fe-meta:/opt/apache-doris/fe/doris-meta \ -v /opt/docker-volumes/doris/fe-log:/opt/apache-doris/fe/log \ -e FE_SERVERS“fe1:doris-fe:9010” \ -e FE_ID1 \ apache/doris:2.0.4-fe-x86_64 # 3. 启动 BE 容器带数据卷 docker run -d \ --name doris-be \ --network doris-network \ -p 8040:8040 \ -v /opt/docker-volumes/doris/be-storage:/opt/apache-doris/be/storage \ -v /opt/docker-volumes/doris/be-log:/opt/apache-doris/be/log \ -e FE_SERVERS“fe1:doris-fe:9010” \ apache/doris:2.0.4-be-x86_64这样即使容器被删除只要宿主机上的/opt/docker-volumes/doris/目录还在重新创建容器并挂载相同的卷数据就能恢复。5. 常见问题排查与解决方案在部署和运行过程中你可能会遇到一些问题。下面列出了一些典型问题及其排查思路。5.1 容器启动失败现象docker run命令执行后容器状态很快变为Exited。排查查看容器日志这是最重要的步骤。docker logs doris-fe # 查看 FE 日志 docker logs doris-be # 查看 BE 日志常见日志错误与解决Error: Could not create the Java Virtual Machine.或Invalid maximum heap sizeJVM 内存参数设置问题。检查宿主机内存是否充足或尝试在启动命令中通过-e JAVA_OPTS“-Xmx2g -Xms2g”环境变量为容器内的 JVM 指定更小的堆内存。Address already in use端口冲突。检查宿主机 8030, 9030, 8040 端口是否已被其他程序占用。可以修改-p参数映射到其他端口如-p 18030:8030。FE type: UNKNOWN一直不变化FE 启动后无法完成自选举。检查FE_SERVERS环境变量配置是否正确网络是否互通。可以尝试删除容器和对应的数据卷如果是测试然后重新启动。5.2 BE 节点添加失败或状态不为 Alive现象在 FE 中执行SHOW PROC ‘/backends’;看到 BE 的Alive列为false。排查检查 BE 容器日志docker logs doris-be看是否有心跳发送失败的错误。检查网络连通性在 BE 容器内尝试 ping FE 容器。docker exec -it doris-be ping doris-fe如果不通检查 Docker 网络doris-network是否存在以及两个容器是否都连接到了该网络。检查 IP 和端口确认添加 BE 时使用的 IP 和端口9050是否正确。可以在 BE 容器内使用netstat -tlnp查看 9050 端口是否在监听。检查 FE 的元数据有时旧的错误信息会残留。可以尝试先移除再添加 BE谨慎操作生产环境勿用ALTER SYSTEM DECOMMISSION BACKEND “BE_IP:PORT”; -- 先下线 -- 等待状态变更后再尝试重新添加 ALTER SYSTEM ADD BACKEND “BE_IP:PORT”;5.3 无法通过 MySQL 客户端连接现象使用mysql -h 127.0.0.1 -P 9030 -uroot连接失败。排查确认 FE 容器是否运行docker ps | grep doris-fe。确认端口映射docker port doris-fe查看 9030 端口是否映射到了宿主机。检查防火墙宿主机防火墙可能阻止了端口访问。尝试临时关闭防火墙仅测试或添加规则放行 9030 端口。从容器内部连接测试在另一个临时容器内连接排除宿主机网络问题。docker run -it --rm --network doris-network mysql:8.0 mysql -h doris-fe -P 9030 -uroot5.4 数据插入或查询报错现象执行 INSERT 或 SELECT 语句时报错例如Tablet writer write failed。排查查看 BE 日志错误通常与 BE 相关。docker logs --tail 100 doris-be查看最新错误。检查磁盘空间BE 数据目录磁盘空间不足会导致写入失败。进入 BE 容器检查/opt/apache-doris/be/storage所在磁盘使用情况 (df -h)。检查副本数设置单机部署时建表语句中的“replication_num”属性必须设置为1。如果设置为大于 1Doris 会尝试在其他 BE 上创建副本而单机只有一个 BE会导致失败。检查建表语句确认分桶数BUCKETS设置合理避免过多或过少。下表总结了部署 Doris 时可能遇到的常见问题及快速排查方向问题现象可能原因检查点解决建议容器启动后立即退出1. 端口冲突2. 内存不足 (JVM)3. 启动脚本错误1.docker logs 容器名2.docker ps -a查看状态3. 宿主机free -h1. 更换映射端口2. 增加宿主机内存或调小JAVA_OPTS3. 检查环境变量格式BE 状态Alive为false1. 网络不通2. 心跳端口(9050)未开放3. FE 未就绪1. 容器间ping2. BE 容器内netstat -tlnp | grep 90503. FE 日志grep “heartbeat”1. 确认使用同一 Docker 网络2. 检查防火墙/安全组3. 等待 FE 完全启动后再添加 BEMySQL 客户端连接被拒绝1. FE 未运行2. 端口映射错误3. 宿主机防火墙1.docker ps | grep fe2.docker port doris-fe3.telnet 宿主机IP 90301. 启动 FE 容器2. 修正-p参数3. 配置防火墙规则建表或插入数据失败1. 副本数replication_num 1 (单机)2. BE 磁盘空间不足3. 语法错误1. 建表语句 PROPERTIES2. BE 容器df -h3. Doris 错误日志1. 单机设置“replication_num” “1”2. 清理磁盘或扩容3. 核对 Doris SQL 语法6. 生产环境考量与进阶配置将 Docker 化 Doris 用于生产环境需要考虑更多因素包括高可用、资源管理、监控和备份。6.1 高可用部署架构单节点 FE 存在单点故障风险。生产环境至少需要部署3 个 FE 节点1 Leader 2 Follower以实现高可用。部署多个 FE 时关键点在于FE 配置每个 FE 的fe.conf中需要配置所有 FE 节点的元数据同步信息。启动顺序先启动所有 Follower最后启动一个节点作为 Observer 或直接指定 Leader。客户端连接应用客户端可以连接任意 FE 节点非 Leader 节点会自动将写请求转发给 Leader。由于手动配置多 FE 集群较为复杂可以考虑使用Docker Compose或Kubernetes Helm Chart来编排和管理多容器部署社区有相关的编排模板可供参考。6.2 资源限制与监控在 Docker 或 Kubernetes 中必须为 Doris 容器设置合理的资源限制防止单个容器耗尽宿主机资源。# 示例启动时限制 CPU 和内存 docker run -d \ --name doris-be \ --cpus“4.0” \ # 限制使用 4 个 CPU 核 --memory“8g” \ # 限制使用 8GB 内存 --memory-swap“8g” \ # 禁止使用交换分区 ... (其他参数)同时需要建立监控体系容器监控使用docker stats或集成 Prometheus cAdvisor 监控容器本身的 CPU、内存、网络、磁盘 IO。Doris 监控通过 FE 的 Web UI (8030端口) 查看集群状态。更进阶的可以部署 Prometheus利用 Doris 的 Metrics 和 Audit Log 进行全方位的性能监控和审计。6.3 数据备份与恢复即使使用了数据卷定期备份 Doris 的元数据和业务数据也是必须的。元数据备份FE 的元数据目录 (doris-meta) 至关重要。除了卷持久化应定期使用mysqldump工具备份 FE 中的__internal_schema数据库存储集群元信息。数据备份Doris 支持BACKUP和RESTORE语句可以将指定数据库或表的数据快照备份到远端存储如 S3、HDFS。这是生产环境推荐的数据备份方式。快照与回滚在进行重大变更如版本升级、集群扩容前对数据卷创建快照如果云存储或文件系统支持是快速回滚的有效手段。6.4 使用 Docker Compose 编排对于多节点的本地开发或测试环境使用 Docker Compose 可以简化管理。下面是一个docker-compose.yml的简化示例version: ‘3.8’ services: doris-fe: image: apache/doris:2.0.4-fe-x86_64 container_name: doris-fe ports: - “8030:8030” - “9030:9030” environment: - FE_SERVERSfe1:doris-fe:9010 - FE_ID1 volumes: - ./fe-meta:/opt/apache-doris/fe/doris-meta - ./fe-log:/opt/apache-doris/fe/log networks: - doris-net doris-be: image: apache/doris:2.0.4-be-x86_64 container_name: doris-be ports: - “8040:8040” environment: - FE_SERVERSfe1:doris-fe:9010 volumes: - ./be-storage:/opt/apache-doris/be/storage - ./be-log:/opt/apache-doris/be/log depends_on: - doris-fe networks: - doris-net networks: doris-net: driver: bridge使用docker-compose up -d启动docker-compose down停止管理起来更加方便。通过 Docker 部署 Apache Doris你将获得一个干净、可移植、易于管理的分析数据库环境。从单机测试开始理解各个组件的作用和交互方式是后续构建复杂、高可用生产集群的坚实基础。在真正投入生产前务必深入规划网络架构、存储方案、资源配额和监控告警体系让 Doris 在容器化的环境中稳定、高效地运行。