温馨提示×

ubuntu docker如何持久化

小樊
37
2026-09-19 11:50:46
栏目: 智能运维

在 Ubuntu 上使用 Docker 时,“持久化”通常指容器数据在容器删除或重启后仍然存在。常见做法有以下几种,从最常用到高级依次说明:


一、使用 Volume(推荐 ✅)

Docker 管理的卷,最安全、最常用

1. 创建 volume

docker volume create mydata

2. 启动容器并挂载

docker run -d \
  -v mydata:/var/lib/mysql \
  --name mysql \
  mysql:8
  • /var/lib/mysql 是容器内路径
  • mydata 是 host 上的 Docker 卷

3. 查看 volume 位置

docker volume inspect mydata

数据由 Docker 管理,位于 /var/lib/docker/volumes/


二、使用 Bind Mount(绑定宿主机目录)

适合你知道路径、需要直接操作文件

docker run -d \
  -v /home/ubuntu/data:/app/data \
  --name myapp \
  myimage
  • /home/ubuntu/data:Ubuntu 本机目录
  • /app/data:容器内目录

✅ 重启、删除容器数据都在
⚠️ 注意权限问题(uid/gid)


三、使用 docker-compose(生产推荐)

docker-compose.yml

version: "3"
services:
  mysql:
    image: mysql:8
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root

volumes:
  db_data:

启动:

docker compose up -d

四、容器配置持久化(不是数据)

1. 提交容器为镜像(不推荐长期使用)

docker commit mycontainer myimage:latest

2. 真正持久化配置方式

  • 挂载配置文件
-v /home/ubuntu/nginx.conf:/etc/nginx/nginx.conf

五、常见坑(Ubuntu 特有)

1. 权限问题

sudo chown -R 1000:1000 /home/ubuntu/data

2. SELinux(Ubuntu 一般没有)

Ubuntu 默认不用 SELinux,但可用 AppArmor

3. 磁盘空间

df -h /var/lib/docker

六、总结对照表

方式 是否推荐 场景
Volume ✅✅✅ 数据库、生产
Bind Mount ✅✅ 配置文件、日志
commit 临时调试
容器内部 会丢

如果你愿意,可以告诉我:

  • 用的是 哪种服务(MySQL / Redis / 自建应用)
  • 是否用 docker-compose
  • 是否是 服务器重启后自动恢复

我可以直接给你一套可复制的配置。

0