【问题标题】:Docker in Docker on AWS Batch?Docker on AWS Batch 中的 Docker?
【发布时间】:2021-03-26 05:00:10
【问题描述】:

是否可以在 AWS 批处理上运行 docker-in-docker?

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

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 计算环境中运行此批处理作业会产生一个作业,该作业会立即转换为 FAILED 状态,状态转换原因为:

Status reason
Unknown volume '/var/run/docker.sock'.

【问题讨论】:

    标签: docker aws-batch


    【解决方案1】:

    解决方案是volumesmountPoints 都必须定义。例如,以下容器属性起作用:

     {
        "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 的身份验证不会继续,因此您需要重新进行身份验证

    aws ecr get-login-password \
        --region <region> \
    | docker login \
        --username AWS \
        --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
    

    在您运行私有托管的 docker 容器之前。

    原来privileged 甚至不需要,这很好。

    【讨论】:

      猜你喜欢
      • 2021-02-21
      • 2018-12-17
      • 1970-01-01
      • 2018-05-19
      • 2019-10-14
      • 2020-05-03
      • 2014-12-22
      • 2019-10-20
      • 2020-05-01
      相关资源
      最近更新 更多