教程:构建容器映像 - AWS Batch

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:构建容器映像

可以在命令参数中使用作业定义中的 AWS_BATCH_JOB_ARRAY_INDEX。但是,我们建议您创建容器映像,该映像改用 Entrypoint 脚本中的变量。本节介绍如何创建此类容器映像。

构建 Docker 容器映像
  1. 创建要用作 Docker 映像工作区的新目录并导航到该目录。

  2. 在工作区目录中创建一个名为 colors.txt 的文件,并将下面的内容粘贴到其中。

    red orange yellow green blue indigo violet
  3. 在工作区目录中创建一个名为 print-color.sh 的文件,并将下面的内容粘贴到其中。

    注意

    LINE 变量被设置为 AWS_BATCH_JOB_ARRAY_INDEX + 1,因为数组索引从 0 开始,但行号从 1 开始。COLOR 变量被设置为与其行号关联的 colors.txt 中的颜色。

    #!/bin/sh LINE=$((AWS_BATCH_JOB_ARRAY_INDEX + 1)) COLOR=$(sed -n ${LINE}p /tmp/colors.txt) echo My favorite color of the rainbow is $COLOR.
  4. 在工作区目录中创建一个名为 Dockerfile 的文件,并将下面的内容粘贴到其中。此 Dockerfile 会将以前的文件复制到您的容器并设置要在容器启动时运行的入口点脚本。

    FROM busybox COPY print-color.sh /tmp/print-color.sh COPY colors.txt /tmp/colors.txt RUN chmod +x /tmp/print-color.sh ENTRYPOINT /tmp/print-color.sh
  5. 生成 Docker 映像。

    $ docker build -t print-color .
  6. 使用以下脚本测试容器。此脚本在本地将 AWS_BATCH_JOB_ARRAY_INDEX 变量设置为 0,然后递增它以模拟具有 7 个子级的数组作业的行为。

    $ AWS_BATCH_JOB_ARRAY_INDEX=0 while [ $AWS_BATCH_JOB_ARRAY_INDEX -le 6 ] do docker run -e AWS_BATCH_JOB_ARRAY_INDEX=$AWS_BATCH_JOB_ARRAY_INDEX print-color AWS_BATCH_JOB_ARRAY_INDEX=$((AWS_BATCH_JOB_ARRAY_INDEX + 1)) done

    下面是输出。

    My favorite color of the rainbow is red.
    My favorite color of the rainbow is orange.
    My favorite color of the rainbow is yellow.
    My favorite color of the rainbow is green.
    My favorite color of the rainbow is blue.
    My favorite color of the rainbow is indigo.
    My favorite color of the rainbow is violet.