gpt4 book ai didi

docker - 使用volume create部署docker应用程序

转载 作者:行者123 更新时间:2023-12-02 06:29:32 25 4
gpt4 key购买 nike

我有一个使用 SQLite 数据库的 Python 应用程序(它是一个每天由 cron 运行的数据收集器)。我想使用 Docker 部署它,可能部署在 AWS 或 Google Container Engine 上。我看到三个主要步骤:
1. 在本地容器化并测试应用程序。
2. 在AWS或GCE上部署并运行应用程序。
3. 定期备份数据库并下载回本地存档。

最近的帖子(关于 Docker、StackOverflow 和其他地方)表示,自 1.9 以来,卷现在是处理持久数据的推荐方式,而不是“数据容器”模式。为了 future 的兼容性,我总是喜欢使用首选的惯用方法,但是卷似乎比数据容器更具挑战性。我错过了什么吗?

遵循“数据容器”模式,我可以轻松地:

  • 使用所有静态程序和配置文件构建基础镜像。
  • 从该镜像创建一个数据容器镜像,并将我的数据库和备份目录复制到其中(在 Dockerfile 中进行简单的复制)。
  • 将两个镜像推送到 Docker Hub。
  • 将它们拉至 AWS。
  • 运行数据和基础镜像,使用“--volume-from”引用数据。

使用“docker 卷创建”:

  • 我不清楚如何将数据库复制到卷中。
  • 我非常不清楚如何将该卷(包含数据库)获取到 AWS 或 GCE...您无法 PUSH/PULL 卷。

我是否遗漏了有关卷的信息?
有关于使用卷来做我想做的事情的很好的概述吗?
是否有按照我的步骤 3 推荐的惯用方法来备份和下载数据(使用数据容器模式或卷)?

最佳答案

当您第一次使用空命名卷时,它将在首次使用时收到镜像卷数据的副本(与基于主机的卷完全覆盖主机目录的安装点)。因此,您可以将主镜像中的卷内容初始化为卷,将该镜像上传到注册表并将该镜像下拉到目标主机,在该主机上创建一个命名卷,将您的镜像指向该命名卷(使用 docker- compose 使最后两个步骤变得简单,实际上最多只有 2 个命令 docker volume create <vol-name>docker run -v <vol-name>:/mnt <image> ),并且它将填充您的初始数据。

从基于容器的卷或命名卷检索数据是一个相同的过程,您需要将卷装载到容器中并运行导出/备份到外部位置。唯一的区别在于命令行,而不是 --volumes-from <container-id>你有-v <vol-name>:/mnt 。您也可以使用相同的过程将数据导入到卷中,从而无需使用卷中的数据来初始化应用程序镜像。

新流程的最大优点是它明确地将数据与容器分开。您可以清除系统上的所有容器,而不必担心丢失数据,并且系统上列出的任何卷的名称都是清晰的,而不是随机分配的名称。最后,命名卷可以安装在目标上的任何位置,如果您有多个数据源(例如配置文件与数据库),您可以选择要安装的卷。

关于docker - 使用volume create部署docker应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37756739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com