私有 Docker 镜像
Docker Compose CLI 会自动配置授权,以便您可以从同一 AWS 账户上的 Amazon ECR 注册表中提取私有映像。要从另一个注册表(包括 Docker Hub)提取私有映像,您必须在AWS Secrets Manager 服务上创建用户名 + 密码(或用户名 + 令牌)密钥。
为方便起见,Docker Compose CLI 提供了该docker secret命令,因此您可以管理在 AWS SMS 上创建的机密,而无需安装 AWS CLI。
首先,创建一个token.json文件来定义您的 DockerHub 用户名和访问令牌。
有关如何生成访问令牌的说明,请参阅管理访问令牌。
{
"username":"DockerHubUserName",
"password":"DockerHubAccessToken"
}
然后,您可以使用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