使用批量创建部署Docker应用

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

最近的文章(在Docker,StackOverflow和其他地方)表示,从1.9开始,现在建议使用卷来处理持久化数据,而不是“数据容器”模式.为了将来的兼容性,我一直喜欢使用首选的惯用方法,但是卷似乎比数据容器更具挑战性.我错过了什么吗?

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

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

使用“ docker volume create”:

>我不清楚如何将数据库复制到该卷中.
>我还不清楚如何使该卷(包含DB)升至AWS或GCE …您无法推/拉卷.

我是否缺少有关卷的内容
使用Volumes做我想做的事情有很好的概述吗?
按照我的第3步,是否有建议的惯用方法来备份和下载数据(使用数据容器模式或卷)?

最佳答案
首次使用空的命名卷时,它将在首次使用时收到映像的卷数据的副本(与基于主机的卷完全将装载点覆盖在主机目录上的基于主机的卷不同).因此,您可以将主映像中的卷内容初始化为一个卷,将该映像上载到注册表并将该映像下拉至目标主机,在该主机上创建一个命名卷,将映像指向该命名卷(使用docker- compose使最后两个步骤变得容易,实际上最多是两个docker volume创建< vol-name>和docker run -v< vol-name>:/ mnt< image>)的命令,并且它将填充您的初始数据.

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

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

相关文章

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Li...
1、什么是docker?答:docker是开源的应用容器引擎;开发人员把他们的应用及依赖包打包发布到容器当中。...
1、什么是namespace? 答:名称空间,作用隔离容器 2、namespace隔离有那些? 答:ipc:共享内存、消息队...
1、Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 、如何将一台宿主机的docker环境...
环境要求: IP hostname 192.168.1.1 node1 项目规划: 容器网段:172.16.10.0/24 NGINX:172.16.10.10...
文档上传地址:https://files.cnblogs.com/files/lin-strive/07-docker%E8%B7%A8%E4%B8%BB%E6%9C%BA%E7...