Docker 数据管理

📅 发布时间:2026/7/7 16:58:46 👁️ 浏览次数:
Docker 数据管理
Docker 数据管理1. 数据卷2. 启动挂载数据卷的容器3. 数据卷的删除与清理1. 数据卷数据卷Volume是 Docker 专为容器数据持久化和共享设计的特殊目录它完全独立于容器的 UnionFS联合文件系统是 Docker 中最推荐的数据管理方式。相比直接操作容器内文件数据卷具备以下不可替代的优势跨容器共享与重用一个数据卷可同时挂载到多个容器中实现容器间数据互通比如前端容器和后端容器共享静态资源目录。实时生效的修改对数据卷内文件的增删改查会立即生效无需重启容器极大提升开发调试效率。镜像与数据解耦修改数据卷中的数据不会影响容器镜像保证镜像的纯净性避免因数据变更导致镜像冗余。生命周期独立数据卷的生命周期不受容器影响即使挂载数据卷的容器被删除数据卷依然保留数据不会丢失只有手动删除数据卷数据才会被清理。数据卷的使用逻辑类似于 Linux 系统中的目录 / 文件挂载mount。当容器启动并挂载数据卷时若数据卷为空镜像中被指定为挂载点的目录下的所有文件会自动复制到数据卷中若数据卷已有数据则直接使用现有数据不会覆盖这一特性保证了容器初始化时的基础数据完整性1、创建一个数据卷使用docker volume create命令可创建自定义名称的数据卷# 创建名为 my-vol 的数据卷dockervolume create my-vol执行后Docker 会在后台完成数据卷的创建并将其存储在宿主机的指定目录默认路径为 /var/lib/docker/volumes/该目录由 Docker 统一管理无需手动干预2、查看数据卷列表创建后可通过docker volume ls命令查看所有已创建的数据卷确认数据卷是否创建成功dockervolumels3、查看数据卷详细信息为了了解数据卷的具体存储路径、创建时间等元数据可使用docker volume inspect命令查询指定数据卷dockervolume inspect my-vol其中 Mountpoint 字段显示了该数据卷在宿主机上的实际存储路径开发者可直接访问该路径操作数据2. 启动挂载数据卷的容器创建数据卷后需将其挂载到容器的指定目录才能让容器读写数据卷中的内容。在docker run命令中通过--mount标记可实现数据卷与容器的挂载且一次启动命令可挂载多个数据卷满足容器多目录的数据需求以 Nginx 容器为例创建名为 web 的容器并将 my-vol 数据卷挂载到容器的/usr/share/nginx/html目录Nginx 默认的网页根目录dockerrun-d-P\--nameweb\--mountsourcemy-vol,target/usr/share/nginx/html\nginx:alpine3. 数据卷的删除与清理数据卷的生命周期独立于容器因此容器被删除后数据卷仍会保留这虽然保证了数据安全但也可能导致无主数据卷占用宿主机空间使用docker volume rm命令可删除指定的未被挂载的数据卷# 删除 my-vol 数据卷dockervolumermmy-vol注意若数据卷仍被容器挂载直接删除会报错需先停止并删除关联容器再删除数据如果希望删除容器的同时清理关联的数据卷可在 docker rm 命令中添加 -v 参数# 删除 web 容器并移除关联的匿名数据卷命名数据卷仍需手动删除dockerrm-vweb长期使用 Docker 后会产生大量无主数据卷没有任何容器挂载的卷占据宿主机磁盘空间。可使用docker volume prune命令一键清理# 清理所有无主数据卷执行前会提示确认dockervolume prune