使用 Docker Compose 安装
使用 Docker Compose 管理持久化 Lavik 服务。
开始之前
使用原生 Linux/amd64 或 Linux/arm64,Linux 内核至少为 6.1,并启用 io_uring。Docker Desktop 使用 Linux 虚拟机;本示例请为虚拟机至少分配 2 个 CPU 和 2 GiB 内存。ARM Mac 上不要通过 x86 模拟运行 io_uring。示例使用 Minimal beta.1 发布包构建本地镜像,采用内核 TCP 和 io_uring。
使用 Docker Compose v2。先停止普通 Docker 示例:两者占用相同的宿主端口 6379 和 9100。Compose 使用独立项目卷,不会自动复用 lavik-beta1-data。
宿主端口绑定 127.0.0.1。本地评估示例未设置密码,不要公开暴露端口。seccomp:unconfined 允许使用默认 Docker 策略可能禁止的 io_uring,同时放宽系统调用过滤。容器仍以非 root 用户运行、移除 capabilities 并禁止提权。共享或生产主机应使用经过审查且支持 io_uring 的 seccomp 策略,并在允许远程连接之前配置认证和 TLS。
准备项目文件
从 Docker 指南复制 Dockerfile 和 start.sh →
在同一新项目目录,将以下内容保存为 compose.yaml。各命令保持项目名一致,以便复用相同的数据卷。
compose.yaml
services:
lavik:
build: .
image: lavik-local:0.1.0-beta.1
ports:
- "127.0.0.1:6379:6379"
- "127.0.0.1:9100:9100"
volumes:
- lavik-data:/var/lib/lavik
read_only: true
tmpfs:
- /tmp
cap_drop: [ALL]
security_opt:
- no-new-privileges:true
- seccomp:unconfined
ulimits:
memlock:
soft: 536870912
hard: 536870912
mem_limit: 1g
cpus: 2
stop_grace_period: 60s
healthcheck:
test: ["CMD-SHELL", "test \"$$(redis-cli --raw PING)\" = PONG"]
interval: 5s
timeout: 3s
retries: 24
start_period: 10s
volumes:
lavik-data:示例预分配 512 MiB 数据文件,并将保留内存上限设为 512 MiB。首次启动前按工作负载选择容量;绝不要截断已有数据文件。命名卷保存数据和日志。删除卷会删除数据库,备份应另行保存。
启动与连接
执行 docker compose -p lavik-beta1 up -d --build --wait,等待服务变为 healthy,再执行 docker compose -p lavik-beta1 exec -T lavik redis-cli PING,应返回 PONG。用相同 exec 前缀执行 SET greeting "hello from Lavik" 和 GET greeting。健康检查确认服务响应 PING,不衡量应用延迟或容量。
管理服务
使用 docker compose -p lavik-beta1 ps 和 docker compose -p lavik-beta1 logs --tail 100 lavik 检查服务。使用 docker compose -p lavik-beta1 restart lavik 正常重启。docker compose -p lavik-beta1 down 删除容器和项目网络,但保留数据库卷;再次执行 up -d --wait 恢复服务。除非确实要删除数据库,否则不要加 --volumes 或 -v。保持项目目录和项目名一致。
这是独立服务,不是高可用集群。Meta 管理的主从部署请使用独立集群指南。