持久化存储
容器默认使用临时文件系统,容器删除后数据也会丢失。使用卷 (Volumes) 和绑定挂载可以实现数据持久化。
卷 (Volumes)
卷是 Docker 管理的持久化存储,独立于容器的生命周期。
创建卷
sh
docker volume create my-volume使用卷
sh
docker run -d \
--name my-app \
-v my-volume:/data \
nginx:latest查看卷
sh
# 列出所有卷
docker volume ls
# 查看卷详情
docker volume inspect my-volume绑定挂载 (Bind Mount)
绑定挂载将主机文件系统路径直接挂载到容器中。
sh
docker run -d \
--name my-app \
-v /host/path:/container/path \
nginx:latest注意
绑定挂载会直接访问主机文件系统,可能存在安全风险。生产环境建议使用卷 (Volumes)。
Docker Compose 示例
yaml
version: '3.8'
services:
db:
image: postgres:15
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: password
volumes:
db_data:备份与恢复
备份卷
sh
docker run --rm \
-v my-volume:/data \
-v $(pwd):/backup \
alpine tar czf /backup/backup.tar.gz /data恢复卷
sh
docker run --rm \
-v my-volume:/data \
-v $(pwd):/backup \
alpine tar xzf /backup/backup.tar.gz -C /