云计算核心技术Docker教程:Docker上ECS私有镜像和卷管理

2022-10-28

私有 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

您好!请登录

点击取消回复