保留容器数据
原文:https://docs.docker.com/guides/walkthroughs/persist-data/
本演练将向您展示如何在容器之间持久化数据。为了更好地理解本演练中的一些概念,请首先完成运行多容器应用程序的演练。
Docker 将容器中的所有内容、代码和数据与您的本地文件系统隔离。当您删除容器时,Docker 也会删除该容器内的所有内容。
有时,您可能希望持久化容器生成的数据。为此,您可以使用卷。
步骤 1: 获取示例应用程序
如果您有 git,可以克隆示例应用程序的仓库。否则,您可以下载示例应用程序。选择以下选项之一。
在终端使用以下命令克隆示例应用程序仓库。
git clone https://github.com/docker/multi-container-app
步骤 2: 添加一个卷以持久化数据
要在删除容器后持久化数据,请使用卷。卷是 Docker Desktop 自动管理的本地文件系统中的一个位置。
要在此项目中添加卷,请在代码或文本编辑器中打开 compose.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/
替换为您的应用程序目录的路径。
cd /path/to/multi-container-app/
docker compose up -d
步骤 4: 查看前端并添加待办事项
在 Docker Desktop 的 容器 标签中,您现在应该有一个应用程序堆栈,其中运行着两个容器(待办事项应用和待办事项数据库)。
查看前端并添加待办事项:
- 在 Docker Desktop 中,展开 容器 中的应用程序堆栈。
- 选择 端口 列中的 3000 端口链接,或打开 http://localhost:3000。
- 在前端添加一些待办任务。
步骤 5: 删除应用程序堆栈并运行新容器
现在,无论您多频繁地删除和重新创建容器,Docker Desktop 都会持久化您的数据,并且可以通过挂载 database
卷使其对系统上的任何容器都可访问。Docker Desktop 会查找 database
卷,并在不存在时创建它。
删除应用程序堆栈:
- 打开 Docker
Desktop 的 容器 标签 2. 选择您的应用程序堆栈旁的删除图标。
删除应用程序堆栈后,按照步骤 3: 运行应用程序的步骤重新运行应用程序。请注意,当您删除容器并再次运行时,您创建的任何待办事项都会被 Docker Desktop 持久保存。
总结
在这个演练中,您使用卷在容器之间持久化了数据。您可以使用这种方式来持久化和共享隔离和短暂容器之间的数据。
相关信息:
- 深入了解卷
- 在 Compose 文件参考 中学习在 Compose 中使用卷
- 通过 CLI 在 docker volume CLI 参考 和 Docker run 参考 中探索使用卷