在 Ubuntu 上使用 Docker 保存/持久化数据,核心思想是:不要让数据只存在容器内部,而是挂载到宿主机(Ubuntu)或外部存储上。下面按常见方式给你讲清楚。
把 Ubuntu 上的目录直接挂进容器
docker run -d \
--name myapp \
-v /home/ubuntu/data:/app/data \
myimage
说明:
/home/ubuntu/data:Ubuntu 上的目录(可自定义)/app/data:容器内的目录适合:
Docker 自己管理的数据卷
docker volume create mydata
docker run -d \
--name myapp \
-v mydata:/app/data \
myimage
查看数据卷位置:
docker volume inspect mydata
特点:
docker run -d \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-v mysql_data:/var/lib/mysql \
mysql:8
✅ 容器删了,数据库数据不丢
docker-compose.yml 示例:
version: "3"
services:
app:
image: myimage
volumes:
- ./data:/app/data
mysql:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
❌ 只写在容器里:
docker run myimage
容器一删,数据全没。
docker run --rm \
-v mydata:/data \
-v $(pwd):/backup \
ubuntu tar czf /backup/data.tar.gz /data
docker run --rm \
-v mydata:/data \
-v $(pwd):/backup \
ubuntu bash -c "cd /data && tar xzf /backup/data.tar.gz"
Ubuntu + Docker 存数据 = 挂载(bind 或 volume)
如果你是:
我可以按你的**具体场景(MySQL / Redis / 网站 / AI 模型)**给你写完整配置。