> 其他外部软件包 > docker volume

Docker Volume 命令指南

Docker 卷是推荐的持久化存储 Docker 容器生成和使用的数据的机制。即使容器被删除,存储在卷中的数据也会保留,从而使您能够在不丢失数据的情况下管理容器。本指南涵盖了如何创建、管理和删除 Docker 卷。

Docker 卷概述

Docker 卷是一个目录或文件,它被挂载到主机文件系统中的特定路径。它允许数据独立于容器的生命周期进行管理,这比将数据与容器镜像捆绑在一起更灵活和高效。卷也可以由多个容器同时共享。

为什么需要卷

容器本质上是短暂的。这意味着当容器被删除时,其中存储的所有数据也会随之消失。为了永久保留重要的数据库、日志文件或用户上传的文件等数据,您必须使用卷。卷解决了这个问题,增强了基于容器的应用程序的稳定性和灵活性。

卷的优点

使用 Docker 卷的主要优点如下:

  • 数据持久性: 即使容器被删除,数据也会保留。
  • 数据共享: 多个容器可以共享同一个卷来访问数据。
  • 性能: 它可以提供比绑定挂载更好的 I/O 性能。
  • 可移植性: 卷不包含在 Dockerfile 中,因此可以保持镜像更轻。
  • 备份/恢复: 卷可以轻松地进行备份和恢复。

主要 Docker Volume 命令

让我们探索各种命令以高效管理 Docker 卷。尝试组合每个选项来创建、检查、删除卷并将其连接到容器。

1. 创建和列出卷

2. 删除卷

3. 将卷连接到容器

生成的命令:

请尝试组合命令。

描述:

`docker volume` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

卷的类型

在 Docker 中,主要有两种类型的挂载用于将数据连接到容器:卷(Volumes)和绑定挂载(Bind mounts)。每种都有不同的用例和特点。

1. 卷 (Volumes)

这是在 Docker 中持久存储数据的首选方法。它存储在由 Docker 管理的主机文件系统的特定区域。

  • 创建和管理: 它们通过 Docker CLI 使用 `docker volume` 命令创建和管理。
  • 位置: 存储在主机的 `/var/lib/docker/volumes/` 路径中。不建议用户直接访问此内部路径。
  • 特点: 它们独立于容器的生命周期,并且可以由多个容器共享。它们提供了性能优势,尤其是在 Docker Desktop 中。

2. 绑定挂载 (Bind mounts)

主机文件系统中的任何位置都可以挂载到容器内部。这对于直接访问主机文件系统结构很有用。

  • 创建和管理: 它们直接依赖于主机的文件系统,并且不受 Docker 的显式管理。
  • 位置: 主机文件系统中的任何目录或文件都可以挂载到容器中。
  • 特点: 它们主要用于开发环境,将源代码挂载到容器中以实时反映更改,或者当容器需要使用主机上的特定配置文件时。

使用示例

通过探索各种实际应用 Docker 卷命令的场景,了解如何管理数据持久性。

创建和使用命名卷

docker volume create my_db_data
docker run -d --name my-mysql --mount source=my_db_data,target=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword mysql:latest

创建一个名为 'my_db_data' 的卷,并将其挂载到 MySQL 容器的数据存储路径。即使容器被删除,数据库数据也会保留。

绑定挂载主机目录

docker run -d --name my-nginx-dev -p 80:80 --mount type=bind,source=/path/to/my/app,target=/usr/share/nginx/html nginx:latest

将主机的当前目录 (`/path/to/my/app`) 挂载到 Nginx 容器的 Web 服务目录 (`/usr/share/nginx/html`),以便在主机上对文件所做的更改会立即反映在容器中。

删除所有未使用的卷

docker volume prune

通过删除所有未连接到任何容器的 Docker 卷来释放磁盘空间。将显示一条确认消息。

强制删除特定卷 (警告)

docker volume rm -f old_volume

强制删除名为 'old_volume' 的卷,无论它是否正在使用。应极其谨慎地使用,因为它可能导致数据丢失。


相同类别命令