互联网技术 / 互联网资讯 · 2024年1月25日 0

Docker教程:ECS私有镜像和卷管理技巧

私有 DockeR 镜像

DockeR CoMpose CLI 会自动配置授权,以便您可以从同一 AWS 账户上的 AMazon ECR 注册表中提取私有映像。要从另一个注册表提取私有映像,您必须在 AWS SecRets ManageR 服务上创建用户名 + 密码(或用户名 + 令牌)密钥。为方便起见,DockeR CoMpose CLI 提供了该dockeR secRet命令,因此您可以管理在 AWS SMS 上创建的机密,而无需安装 AWS CLI。首先,创建一个Token.json文件来定义您的 DockeRHub 用户名和访问令牌。有关如何生成访问令牌的说明,请参阅管理访问令牌。然后,您可以使用dockeR secRet以下命令从该文件创建一个秘密:$ dockeR secRet cReate dockeRhubAcceSSToken Token.json。创建后,您可以在 CoMpose 文件中使用此 ARN,将x-aws-pull_cRedentials自定义扩展与服务的 DockeR 映像 URI 结合使用。

seRvices:

woRkeR:

image: Mycompany/pRivateimage

x-aws-pull_cRedentials: “aRn:aws:secRetSManageR:eu-west-3:12345:secRet:DockeRHubAcceSSToken”

ECS 集成支持基于 AMazon Elastic file system (AMazon EFS) 的卷管理。对于要声明 的 CoMpose 文件voluMe,ECS 集成将定义在 CloudFoRMation 模板中创建 EFS 文件系统,并使用RetAIn策略,以便在应用程序关闭时不会删除数据。如果再次部署相同的应用程序(相同的项目名称),将重新附加文件系统以提供开发人员使用 dockeR-coMpose 时所习惯的相同用户体验。使用卷的基本组合服务可以这样声明:

seRvices:

Nginx:

image: Nginx

voluMes:

– Mydata:/soMe/contAIneR/path

voluMes:

Mydata:

没有特定的卷选项,卷仍然必须voluMes在 coMpose 文件有效的部分中声明(在上面的示例中为空Mydata:条目)如果需要,可以使用dRiveR-opts以下方法自定义初始文件系统:

voluMes:

My-data:

dRiveR_opts:

# filesystem configuration

backup_policy: ENABLED

lifecycle_policy: AFTER_14_DAYs

performance_Mode: MaxIO

thRoughput_Mode: Provisioned

Provisioned_thRoughput: 1

通过dockeR coMpose up在 AWS 上执行创建的文件系统可以使用 列出 dockeR voluMe ls和删除dockeR voluMe RM。现有文件系统也可用于已将数据存储在 EFS 上或想要使用由另一个 CoMpose 堆栈创建的文件系统的用户。

voluMes:

My-data:

exteRnal: tRue

naMe: fs-123abcd

从容器访问卷可能会引入 POSIX 用户 ID 权限问题,因为 DockeR 镜像可以为在容器内运行的进程定义任意用户 ID/组 ID。但是,同样uid:gid必须匹配文件系统上的 POSIX 权限。要解决可能的冲突,您可以设置卷 uid并gid在访问卷时使用:

voluMes:

My-data:

dRiveR_opts:

# AcceSS point configuration

uid: 0

gid: 0