我正在从AWS ECR将Apache,MySQL和memcached docker容器启动到ECS实例中。工程师可以浏览并根据需要进行更改。这些容器在设置的时间段后到期,但是它们希望保存其数据库更改以供将来的容器使用。
我正在研究是否有一种解决方案,可以使用Lambda,aws-cli或其他实用程序在容器终止之前自动执行此过程。
我正在寻找一种解决方案,该方案将采用mysql容器并从中创建一个新映像。我看到了这个问题,这主要是我想要的: How to create a new docker image from a running container on Amazon?
但是您必须从ECS实例运行docker commit
并执行登录并从那里推送。似乎没有一种方法可以将提交的映像推送到ECR,而无需登录aws ecr get-login --no-include-email
并为docker运行输出以获取令牌。
我遇到的问题是,如果我们到了多个ECS实例正在运行的地步,则很难知道工程师从哪个容器运行,SSH进入该服务器并运行{{1} },docker commit
,docker tag
和aws ecr login
命令。在我看来,这似乎很容易出错,而且很容易出错。
我每小时都要重新构建MySQL容器并将其重新推送到ECR,以便它们具有最新的内容更新。要启动容器,我使用ecs-cli和aws-cli的组合,使用docker-compose.yml文件在ECS中创建任务。
是否可以使用一些功能将运行中的容器提交给具有新名称/标签的ECR?
我正在研究的另一个选项是使用持久性存储(EBS / EFS)启动MySQL容器,但仍在尝试查看是否可行,因为我必须以某种方式标记持久性存储,以便仅在以下情况下使用工程师以这种方式启动它。本质上,我将有一个唯一的docker-compose.yml文件,该文件特定于持久卷,并且它将使用新的mysql数据启动一个新容器,或者使用一个已有的(如果存在的话)给定特定名称。