温馨提示×

Ubuntu Docker如何存数据

小樊
37
2026-09-25 15:18:56
栏目: 智能运维

在 Ubuntu 上使用 Docker 保存/持久化数据,核心思想是:不要让数据只存在容器内部,而是挂载到宿主机(Ubuntu)或外部存储上。下面按常见方式给你讲清楚。


一、最常用:绑定挂载(Bind Mount)

把 Ubuntu 上的目录直接挂进容器

docker run -d \
  --name myapp \
  -v /home/ubuntu/data:/app/data \
  myimage

说明:

  • /home/ubuntu/data:Ubuntu 上的目录(可自定义)
  • /app/data:容器内的目录
  • 容器删了,数据还在 Ubuntu 上 ✅

适合:

  • 配置文件
  • 日志
  • 项目代码

二、推荐:Docker Volume(官方管理方式)

Docker 自己管理的数据卷

docker volume create mydata

docker run -d \
  --name myapp \
  -v mydata:/app/data \
  myimage

查看数据卷位置:

docker volume inspect mydata

特点:

  • 更安全、易管理
  • 适合数据库(MySQL、PostgreSQL 等)
  • 不依赖具体 Ubuntu 路径

三、数据库示例(MySQL)

docker run -d \
  --name mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -v mysql_data:/var/lib/mysql \
  mysql:8

✅ 容器删了,数据库数据不丢


四、Docker Compose 方式(最实用)

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

容器一删,数据全没。


六、备份数据(Ubuntu 上)

备份 volume

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)

如果你是:

  • 跑网站 → 挂载代码和日志
  • 跑数据库 → 用 volume
  • 生产环境 → 再加备份

我可以按你的**具体场景(MySQL / Redis / 网站 / AI 模型)**给你写完整配置。

0 踩