保留容器数据

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

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

数据隔离图

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

在开始之前,请获取最新版本的 Docker Desktop。 Docker 定期添加新功能,本指南的某些部分可能仅适用于最新版本的 Docker Desktop。

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

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


在终端中使用以下命令来克隆示例应用程序存储库。

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

下载源代码并解压。


步骤 2:添加卷以保存数据

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

体积图

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

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

# ...
volumes:
  database:

volumes嵌套在下面的元素告诉todo-databaseCompose 将指定的卷挂载database/data/dbtodo-database 服务的容器中。

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

第 3 步:运行应用程序

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

提示

要运行 Docker 命令,您必须使用终端。根据您的操作系统,您可以通过执行以下操作打开终端:

对于 Windows,选择“开始”菜单,指定cmd,然后选择 “命令提示符”

对于 Mac,请选择Dock 中的LaunchpadTerminal图标,在搜索字段中进行指定,然后选择“终端”

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

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

在Docker Desktop 的“容器”选项卡中,您现在应该有一个应用程序堆栈,其中有两个正在运行的容器(todo-app 和 todo-database)。

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

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

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

现在,无论您删除和重新创建容器的频率如何,Docker Desktop 都会保留您的数据,并且系统上的任何容器都可以通过安装卷来访问这些数据database。 Docker Desktop 会查找该database卷,如果不存在则创建它。

删除应用程序堆栈:

  1. 打开Docker Desktop 的容器选项卡
  2. 选择应用程序堆栈旁边的删除图标。
删除应用程序堆栈

删除应用程序堆栈后,请按照 步骤 3:运行应用程序中的步骤重新运行应用程序。请注意,当您删除容器并再次运行它们时,Docker Desktop 会保留您创建的所有待办事项。

概括

在本演练中,您使用卷在容器之间保留数据。您可以使用它来在隔离和临时容器之间保存和共享数据。

相关信息:

下一步

继续下一个演练,了解如何从容器访问本地目录。