首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Docker in Docker on AWS Batch?

Docker in Docker on AWS Batch?
EN

Stack Overflow用户
提问于 2020-12-15 22:31:26
回答 1查看 348关注 0票数 0

是否可以在AWS batch上运行docker-in-docker?

我尝试过通过容器属性挂载docker socket的方法:

代码语言:javascript
运行
复制
container_properties = <<CONTAINER_PROPERTIES
 {
    "command": ["docker", "run", "my container"],
    "image": "docker/compose",
    "jobRoleArn": "my-role",
    "memory": 2000,
    "vcpus": 1,
    "privileged": true,
    "mountPoints": [
      {
        "sourceVolume": "/var/run/docker.sock",
        "containerPath": "/var/run/docker.sock",
        "readOnly": false
      }
    ]
 }

但是,在使用默认配置的SPOT计算环境中运行此批处理作业会生成一个立即转换为失败状态的作业,并显示状态转换原因:

代码语言:javascript
运行
复制
Status reason
Unknown volume '/var/run/docker.sock'.
EN

回答 1

Stack Overflow用户

发布于 2020-12-15 23:26:44

解决方案是必须同时定义volumesmountPoints。例如,以下容器属性有效:

代码语言:javascript
运行
复制
 {
    "command": ["docker", "run", "<my container>"],
    "image": "docker/compose",
    "jobRoleArn": "my-role",
    "memory": 2000,
    "vcpus": 1,
    "privileged": false,
    "volumes": [
      {
        "host": {
          "sourcePath": "/var/run/docker.sock"
        },
        "name": "dockersock"
      }
    ],
    "mountPoints": [
      {
        "sourceVolume": "dockersock",
        "containerPath": "/var/run/docker.sock",
        "readOnly": false
      }
    ]

从内部docker可以很好地访问您的私有ECR映像,但是从外部docker到ECR的身份验证不会继续,因此您需要使用

代码语言:javascript
运行
复制
aws ecr get-login-password \
    --region <region> \
| docker login \
    --username AWS \
    --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com

在你运行你私人托管的docker容器之前。

事实证明,privileged甚至不是必需的,这很好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65307922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档