Skip to content

保留容器数据

原文:https://docs.docker.com/guides/walkthroughs/persist-data/

本演练将向您展示如何在容器之间持久化数据。为了更好地理解本演练中的一些概念,请首先完成运行多容器应用程序的演练。

Docker 将容器中的所有内容、代码和数据与您的本地文件系统隔离。当您删除容器时,Docker 也会删除该容器内的所有内容。

数据隔离图

有时,您可能希望持久化容器生成的数据。为此,您可以使用卷。

步骤 1: 获取示例应用程序

如果您有 git,可以克隆示例应用程序的仓库。否则,您可以下载示例应用程序。选择以下选项之一。

在终端使用以下命令克隆示例应用程序仓库。

bash
git clone https://github.com/docker/multi-container-app

步骤 2: 添加一个卷以持久化数据

要在删除容器后持久化数据,请使用卷。卷是 Docker Desktop 自动管理的本地文件系统中的一个位置。

卷图

要在此项目中添加卷,请在代码或文本编辑器中打开 compose.yaml 文件,然后取消注释以下行。

yaml
todo-database:
  # ...
  volumes:
    - database:/data/db

# ...
volumes:
  database:

嵌套在 todo-database 下的 volumes 元素指示 Compose 将名为 database 的卷挂载到 todo-database 服务的容器中的 /data/db

顶层的 volumes 元素定义并配置了一个名为 database 的卷,该卷可以被 Compose 文件中的任何服务使用。

步骤 3: 运行应用程序

要运行多容器应用程序,请打开终端并运行以下命令。将 /path/to/multi-container-app/ 替换为您的应用程序目录的路径。

bash
cd /path/to/multi-container-app/
bash
docker compose up -d

步骤 4: 查看前端并添加待办事项

在 Docker Desktop 的 容器 标签中,您现在应该有一个应用程序堆栈,其中运行着两个容器(待办事项应用和待办事项数据库)。

查看前端并添加待办事项:

  1. 在 Docker Desktop 中,展开 容器 中的应用程序堆栈。
  2. 选择 端口 列中的 3000 端口链接,或打开 http://localhost:3000
  3. 在前端添加一些待办任务。

步骤 5: 删除应用程序堆栈并运行新容器

现在,无论您多频繁地删除和重新创建容器,Docker Desktop 都会持久化您的数据,并且可以通过挂载 database 卷使其对系统上的任何容器都可访问。Docker Desktop 会查找 database 卷,并在不存在时创建它。

删除应用程序堆栈:

  1. 打开 Docker

Desktop 的 容器 标签 2. 选择您的应用程序堆栈旁的删除图标。

删除应用程序堆栈

删除应用程序堆栈后,按照步骤 3: 运行应用程序的步骤重新运行应用程序。请注意,当您删除容器并再次运行时,您创建的任何待办事项都会被 Docker Desktop 持久保存。

总结

在这个演练中,您使用卷在容器之间持久化了数据。您可以使用这种方式来持久化和共享隔离和短暂容器之间的数据。

相关信息: