

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

# Amazon P SageMaker rocessing 如何运行您的处理容器映像
<a name="byoc-run-image"></a>

Amazon P SageMaker rocessing 以与以下命令类似的方式运行您的处理容器映像，其中`AppSpecification.ImageUri`是您在`CreateProcessingJob`操作中指定的 Amazon ECR 图像 URI。

```
docker run [AppSpecification.ImageUri]
```

此命令运行在 Docker 映像中配置的 `ENTRYPOINT` 命令。

您还可以通过在 `CreateProcessingJob` 请求中使用 `AppSpecification.ContainerEntrypoint` 和 `AppSpecification.ContainerArgument` 参数来覆盖映像中的入口点命令，或者向入口点命令提供命令行参数。指定这些参数可将 Amazon SageMaker Processing 配置为运行容器，其方式与以下命令类似。

```
 docker run --entry-point [AppSpecification.ContainerEntrypoint] [AppSpecification.ImageUri] [AppSpecification.ContainerArguments]
```

例如，如果您在`CreateProcessingJob `请求`[python3, -v, /processing_script.py]`中指定，并`ContainerArguments`指定为，则 Amazon Proc `[data-format, csv]` ess SageMaker ing 会使用以下命令运行您的容器。`ContainerEntrypoint`

```
 python3 -v /processing_script.py data-format csv 
```

 构建处理容器时，请考虑以下详细信息：
+ Ama SageMaker zon Processing 根据命令运行的退出代码来决定任务是完成还是失败。如果所有处理容器都成功退出且退出代码为 0，处理作业已完成；如果任何容器以非零退出代码退出，则处理作业失败。
+  Amazon SageMaker Processing 允许您覆盖处理容器的入口点并设置命令行参数，就像使用 Docker API 一样。Docker 映像还可以使用 `ENTRYPOINT` 和 CMD 指令配置入口点和命令行参数。`CreateProcessingJob` 的 `ContainerEntrypoint` 和 `ContainerArgument` 参数配置 Docker 映像入口点和参数的方式反映了 Docker 如何通过 Docker API 覆盖入口点和参数的方式：
  + 如果既未提供 `ContainerEntrypoint`，也未提供 `ContainerArguments`，则 Processing 使用映像中的默认 `ENTRYPOINT` 或 CMD。
  + 如果提供了 `ContainerEntrypoint`，但未提供 `ContainerArguments`，则 Processing 使用给定的入口点运行映像，并忽略映像中的 `ENTRYPOINT` 和 CMD。
  + 如果提供了 `ContainerArguments`，但未提供 `ContainerEntrypoint`，则 Processing 使用映像中的默认 `ENTRYPOINT` 和提供的参数运行映像。
  + 如果同时提供了 `ContainerEntrypoint` 和 `ContainerArguments`，则 Processing 使用给定的入口点和参数运行映像，并忽略映像中的 `ENTRYPOINT` 和 CMD。
+ 在 Dockerfile 中必须使用 `ENTRYPOINT` 指令的 exec 形式 (`ENTRYPOINT` `["executable", "param1", "param2"])`，而不是 shell 形式 (`ENTRYPOINT`` command param1 param2`)。这样处理容器才能接收 `SIGINT` 和 `SIGKILL` 信号，Processing 使用这些信号和 `StopProcessingJob` API 来停止处理作业。
+ `/opt/ml`而且它的所有子目录都由 SageMaker AI 保留。在构建 Processing Docker 映像时，请勿将处理容器所需的任何数据放置在这些目录中。
+ 如果您计划使用 GPU 设备，请确保容器与 nvidia-docker 兼容。在容器中仅包含 CUDA 工具包。不要将 NVIDIA 驱动程序与映像捆绑。有关 nvidia-docker 的更多信息，请参阅 [NVIDIA/nvidia-docker](https://github.com/NVIDIA/nvidia-docker)。