繁体   English   中英

如何使用 AWS Batch 运行“docker run hello-world”

[英]How to run "docker run hello-world" using AWS Batch

我已经使用 boto3 构建了一个创建计算环境、创建作业队列、注册作业定义并最终提交作业的工作流。 尝试 'ls' 命令可以正常工作,但是,尝试命令 'docker run hello-world' 时不起作用。

创建comp env的代码:

response = client.create_compute_environment(
        computeEnvironmentName=com_env_name,
        type='MANAGED',
        state='ENABLED',
        computeResources={
            'type': 'EC2',
            'allocationStrategy': 'BEST_FIT',
            'minvCpus': 0,
            'maxvCpus': 5,
            'instanceTypes': [
                'c3.large',
            ],
            'ec2Configuration': [{
                'imageType': 'ECS_AL2',
            }],
            'subnets': [
                subnet_id,
            ],
            
            'securityGroupIds': [
                sec_gr_id,
            ],
            'instanceRole': 'ecsInstanceRole', 
        },
        serviceRole = 'arn:aws:iam::blabla
 )

作业队列定义为:

response = batch_client.create_job_queue(
            jobQueueName=queue_name,
            state='ENABLED',
            priority=1,
            computeEnvironmentOrder=[
                {
                    'order': 1,
                    'computeEnvironment': com_env_name
                },
            ],
        )

我的目标是运行“docker run hello-world”。 作业定义如下:

response = batch.register_job_definition(
            jobDefinitionName=job_def_name,
            type='container',
            containerProperties={
                'image': 'custom-image',
                'memory': 2048,
                'vcpus': 2,
                'command': ['ls'],
                'environment': [
                                {
                                    'name': "DOCKER_HOST",
                                    'value': "unix:///var/run/docker.sock"
                                },
                            ],
                'volumes': [
                        {
                            'host': {
                                'sourcePath': '//var/run/docker.sock'
                            },
                            'name': 'docker'
                        }],
                'mountPoints': [
                        {
                            'containerPath': '/var/run/docker.sock',
                            'sourceVolume': 'docker'
                        }],
            },
        )

卷和挂载点是否设置正确? 什么不见​​了? 码头工人之间是否有联系要建立? 提交作业后的输出错误是:

CannotStartContainerError:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:380:启动容器进程导致:exec:“docker run hello-world”:$PATH 中找不到可执行文件:未知

作业提交的代码是:

        response = batch.submit_job(
            jobDefinition=job_def_name,
            jobName=job_nom,
            jobQueue=job_queue_name,
            containerOverrides={
                'command': ['docker run hello-world',]
            }

我注意到两件事:

  • 您的sourcePath中有一个额外的斜线
  • 您收到的错误消息似乎表明您正在运行的映像中不存在 docker 可执行文件。 您需要在 docker 中使用支持 docker 的镜像,例如标准docker镜像

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM