在AWS Fargate上使用卷

36次阅读
没有评论

问题描述

是一个新手,正在使用AWS Fargate和Docker。他之前使用Docker已经有几个月了,现在开始使用Fargate。他创建了一个特定的Docker实例,命令如下:

docker run -v localHostFolder/configFile:dockerFolder/configFile -v my-vol:/app --restart always --entrypoint "myEntryScript.sh" myDockerImage

在Docker中,这个命令可以正常工作。他在这里做的是从他的机器上加载一个配置文件”localHostFolder/configFile”到他创建的Docker实例中。他希望Docker实例能够使用一些配置值。此外,他使用了my-vol:/app来保存Docker容器的状态数据,以便在容器重新启动时可以使用这些数据。

现在,有几个问题:
1. 我了解到Fargate只能访问容器,而不能访问底层主机。那么,如何实现上述操作呢?
2. 当我尝试创建一个Fargate容器时,我看到有一个卷的选项,但不确定它是如何工作的。实际上,我发现挂载卷的下拉菜单始终为空,也没有创建选项。这是只有管理员才能做的吗?
3. 我们是否可以在Fargate上实现上述操作?如果不能使用卷,是否有其他方法可以实现?
4. 我还注意到有一种称为服务发现的功能,我认为可以用来创建一个固定的DNS记录,这样其他AWS容器可以使用DNS主机名而不是IP。在Fargate上是否可行?我知道在ECS上是可以的,但还没有尝试过。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据回答1,Fargate主要用于无状态容器解决方案,不支持持久化存储。但是,你可以在容器配置时添加存储,可以使用NFS或将数据从Fargate上传到S3。

方案2

根据回答1,当使用EC2或Fargate启动类型时,支持将主机上的文件或目录绑定到容器中。Fargate任务仅支持非持久性存储卷,因此不支持主机和sourcePath字段。更多信息,请参考Fargate任务存储

方案3

根据回答1,你可以配置Amazon ECS服务来使用Amazon ECS服务发现。服务发现使用AWS Cloud Map API操作来管理Amazon ECS服务的HTTP和DNS命名空间。要创建服务发现,请参考这里

以上是在AWS Fargate上使用卷的解决方案。请根据你的需求选择适合的方案。

正文完