温馨提示×

ubuntu docker如何持久化存储

小樊
53
2026-09-28 12:20:58
栏目: 云计算

在 Ubuntu 上使用 Docker 时,持久化存储通常指:容器删除或重启后,数据依然保留。Docker 提供几种常见方式,最推荐的是 Volume(卷) 和 Bind Mount(绑定挂载)。


一、使用 Docker Volume(推荐 ✅)

1️⃣ 创建 Volume

docker volume create mydata

查看卷:

docker volume ls

2️⃣ 使用 Volume 启动容器

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

✅ 数据保存在:

/var/lib/docker/volumes/mydata/_data

3️⃣ 查看 Volume 实际位置

docker volume inspect mydata

二、使用 Bind Mount(直接挂载宿主机目录)

适合:配置文件、日志、代码

docker run -d \
  --name nginx \
  -v /home/ubuntu/nginx:/usr/share/nginx/html \
  -p 80:80 \
  nginx

✅ 宿主机目录 /home/ubuntu/nginx 的内容会直接映射到容器中

⚠️ 注意权限问题(尤其是非 root 用户)


三、对比:Volume vs Bind Mount

方式 推荐场景 管理方便 安全性
Volume 数据库、重要数据 ✅ ✅
Bind Mount 配置、代码、日志 ✅ ⚠️

四、Docker Compose 示例(常用)

version: "3"
services:
  mysql:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:

启动:

docker compose up -d

五、常见问题

❓ 容器删了,数据还在吗?

  • Volume:在
  • Bind Mount:在
  • 没挂载:❌ 没了

❓ Volume 怎么备份?

docker run --rm \
  -v mydata:/data \
  -v $(pwd):/backup \
  busybox \
  tar czf /backup/mydata.tar.gz -C /data .

六、总结(最佳实践)

✅ 数据库 → 用 Volume
✅ 配置/日志 → Bind Mount
❌ 不要只放容器内部

如果你有 具体场景(MySQL / Redis / 网站 / 自建服务),我可以给你更精确的配置示例。

0 踩