在使用 Docker 运行 Ubuntu 容器时,我们经常会遇到一个问题:容器一旦被删除,其中的数据也会随之消失。为了解决这个问题,Docker 提供了“存储卷”(Volume)机制,实现容器持久化存储。本教程将手把手教你如何在 Ubuntu 系统中管理 Docker 容器的存储卷,即使是零基础的小白也能轻松上手。
什么是 Docker 存储卷?
Docker 存储卷是 Docker 用来持久化数据的一种方式。它独立于容器生命周期存在,即使容器被删除,卷中的数据依然保留。这对于数据库、配置文件、日志等需要长期保存的数据非常关键。
准备工作:安装 Docker
首先,确保你的 Ubuntu 系统已安装 Docker。如果尚未安装,请运行以下命令:
sudo apt updatesudo apt install -y docker.iosudo systemctl start dockersudo systemctl enable docker
安装完成后,可通过 docker --version 验证是否成功。
方法一:使用命名卷(Named Volume)
这是最推荐的方式,由 Docker 自动管理存储位置。
1. 创建一个名为 mydata
的卷:
docker volume create mydata
2. 启动 Ubuntu 容器并挂载该卷到 /data
目录:
docker run -it --name ubuntu-container \ -v mydata:/data \ ubuntu:latest /bin/bash
现在,你在容器内的
/data目录下创建的任何文件都会被持久化保存在
mydata卷中。
方法二:绑定挂载(Bind Mount)
这种方式直接将宿主机的某个目录挂载到容器中,适合开发调试。
mkdir -p ~/myappdocker run -it --name ubuntu-bind \ -v ~/myapp:/app \ ubuntu:latest /bin/bash
此时,宿主机的
~/myapp目录与容器内的
/app目录完全同步。
查看和管理存储卷
你可以使用以下命令来管理 Docker 卷:
docker volume ls —— 列出所有卷 docker volume inspect mydata —— 查看卷详细信息 docker volume rm mydata —— 删除指定卷(需先停止使用该卷的容器) 实战示例:持久化 MySQL 数据
假设你想运行一个 MySQL 容器,并确保数据库数据不会因容器重启而丢失:
docker volume create mysql-datadocker run -d --name mysql-db \ -e MYSQL_ROOT_PASSWORD=123456 \ -v mysql-data:/var/lib/mysql \ mysql:8.0
这样,即使你删除并重新创建 MySQL 容器,只要挂载同一个
mysql-data
卷,数据就会完整保留。 总结
通过本教程,你已经掌握了在 Ubuntu 系统中使用 Docker 存储卷进行Ubuntu容器存储卷管理的核心技能。无论是使用命名卷还是绑定挂载,都能有效实现Docker数据卷管理和容器持久化存储。希望这篇Ubuntu Docker教程能帮助你构建更稳定、可靠的应用环境!
提示:生产环境中建议优先使用命名卷,因其由 Docker 统一管理,路径更安全且便于迁移。
