Docker Compose 部署 Apache Doris详细指南(持久化至 /data)
作者:❀͜͡傀儡师
Docker Compose 部署 Apache Doris 完整指南(持久化至 /data)
你当前的 docker-compose-doris.yaml 使用 host 网络和 latest 标签,可以运行但存在数据丢失风险。以下是一份将数据持久化到宿主机 /data 的完整方案,并附上官方依据和验证步骤。
一、官方对持久化的明确说明
Apache Doris 官方文档指出,All-in-One 镜像及相关 Docker 部署方式默认不持久化数据,容器删除后数据即丢失,“这通常正是 CI 想要的”。需要保留数据时,官方给出的方案是挂载 /opt/apache-doris/fe/doris-meta 和 /opt/apache-doris/be/storage,且启动流程是幂等的,同一份数据目录可以反复拉起。
同时,官方明确警告:Docker 部署仅用于本地开发和测试,不适合生产环境;单副本实例不具备数据冗余能力,生产环境应使用多副本存储。
二、完整的持久化 Compose 配置
在你原有配置基础上,增加 volumes 挂载到 /data/doris,并添加 restart 策略。镜像版本建议固定,避免 latest 漂移。
version: "3"
services:
fe:
image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/doris::fe-latest
hostname: fe
environment:
- FE_SERVERS=fe1:127.0.0.1:9010
- FE_ID=1
volumes:
- /data/doris/fe/doris-meta:/opt/apache-doris/fe/doris-meta
- /data/doris/fe/log:/opt/apache-doris/fe/log
network_mode: host
restart: unless-stopped
be:
image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/doris::be-latest
hostname: be
environment:
- FE_SERVERS=fe1:127.0.0.1:9010
- BE_ADDR=127.0.0.1:9050
volumes:
- /data/doris/be/storage:/opt/apache-doris/be/storage
- /data/doris/be/log:/opt/apache-doris/be/log
depends_on:
- fe
network_mode: host
restart: unless-stopped挂载路径的选择依据来自官方文档:FE 元数据目录为 /opt/apache-doris/fe/doris-meta,BE 数据目录为 /opt/apache-doris/be/storage。日志目录虽非官方强制,但社区实践通常一并挂载,便于容器重建后排查历史问题。
三、操作步骤
# 1. 创建宿主机目录
mkdir -p /data/doris/fe/doris-meta /data/doris/fe/log \
/data/doris/be/storage /data/doris/be/log
# 2. 设置权限(容器内 Doris 通常以特定 UID 运行,权限不足会导致启动失败)
chown -R 1000:1000 /data/doris
# 3. 启动
docker compose -f docker-compose-doris.yaml up -d
# 4. 等待 1~2 分钟(FE/BE 注册需要时间),然后验证
mysql -uroot -h127.0.0.1 -P9030 -e "SHOW BACKENDS\G"关注 Alive 字段为 true 表示 BE 注册成功。
四、验证持久化是否真正生效
挂载目录不等于数据一定落盘,建议做一次完整验证:
- 连接 Doris,创建一张测试表并插入数据。
- 执行
docker compose down(注意不是stop,down会删除容器)。 - 再次执行
docker compose up -d。 - 查询之前插入的数据是否仍然存在。
如果数据仍在,说明 FE 元数据和 BE 存储数据都成功写入了 /data/doris。如果数据丢失,检查挂载路径拼写和目录权限。
五、关于内核参数的务实建议
你之前提到不想“重来”设置内核参数。实际做法是:先检查,再决定。
sysctl vm.max_map_count swapon --show
如果 vm.max_map_count 已 ≥ 2000000 且 swap 已关闭,直接启动即可。如果 BE 启动失败且日志指向内存映射问题,再执行 sysctl -w vm.max_map_count=2000000。官方说明指出该参数不是命名空间化的,容器无法自行设置,但部分镜像已跳过启动脚本的强制校验,所以并非所有场景都需要预先设置。
六、必须重申的限制
即使做了持久化到 /data,这套 Compose 方案仍然只适合开发测试。官方在多个文档中明确:Docker 部署“仅用于本地开发和测试”,数据在容器销毁时会丢失(未挂载时),单副本不具备冗余能力。持久化挂载解决的是“容器重建后数据不丢”的问题,并不解决“磁盘故障时数据不丢”的问题。生产环境应使用裸机/虚机部署或 K8s Operator 方案。
到此这篇关于Docker Compose 部署 Apache Doris 完整指南(持久化至 /data)的文章就介绍到这了,更多相关Docker Compose 部署 Apache Doris内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
