0.7.4 程序关了数据还在吗——数据卷
一句话破题
容器数据是临时的,关了就没了。数据卷 (Volumes) 为数据保留“家”,让服务重启后数据仍在。
卷类型
- 命名卷:由 Docker 管理,跨容器共享,跨重启持久。
- 绑定挂载:把宿主机目录挂到容器内,适合开发或与宿主机文件交互。
命名卷示例
powershell
docker volume create pgdata
docker run -d --name db -p 5432:5432 -v pgdata:/var/lib/postgresql/data postgres:15-alpine绑定挂载示例(Windows 路径)
powershell
docker run -d --name app -p 3000:3000 -v "D:\\data:/app/data" myapp:latestCompose:多服务编排
docker-compose.yml
yaml
version: '3.9'
services:
db:
image: postgres:15-alpine
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=secret
volumes:
- pgdata:/var/lib/postgresql/data
app:
image: myapp:latest
ports:
- "3000:3000"
environment:
- DB_URL=postgres://postgres:secret@db:5432/postgres
depends_on:
- db
volumes:
pgdata:启动:docker compose up -d,查看:docker compose ps。
可视化
觉知:持久化与可移植
- 数据不要写进容器层;统一写入卷或绑定挂载。
- 在 Windows 下绑定路径时使用绝对路径;生产环境优先命名卷。
AI 协作指南
- 核心意图:让 AI 生成“带持久化的 Compose 文件”。
- 需求定义公式:
- “生成一个包含
app和db的 Compose,db使用命名卷持久化数据,app通过容器名连接数据库。”
- “生成一个包含
