Dockerfile 规格 - Amazon SageMaker

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

Dockerfile 规格

您在 Dockerfile 中指定的镜像必须符合以下各节中的规格才能成功创建镜像。

运行映像

  • Entrypoint— 我们建议使用将入口点嵌入到图像中 Docker CMDEntrypoint说明。您还可以配置在运行时传递到容器的ContainerEntrypointContainerArguments。有关更多信息,请参阅 CodeEditorAppImageConfig

  • EnvVariables— 使用 Studio,您可以配置可供容器使用的ContainerEnvironment变量。环境变量会被中的环境变量覆盖。 SageMaker为了向您提供更好的体验,环境变量通常是SageMaker_namespacedAWS_并且优先考虑平台环境。

    以下是环境变量:

    • AWS_REGION

    • AWS_DEFAULT_REGION

    • AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

    • SAGEMAKER_SPACE_NAME

用户和文件系统的规格

  • WorkingDirectory— 您的空间的 Amazon EBS 卷已安装在路径上/home/sagemaker-user。您无法更改挂载路径。使用WORKDIR说明将图像的工作目录设置为其中的文件夹/home/sagemaker-user

  • UID— 的用户 ID Docker 容器。UID=1000 是一个支持的值。您可以为用户添加 sudo 访问权限。对IDs它们进行了重新映射,以防止容器中运行的进程拥有超出必要权限的权限。

  • GID— 的群组 ID Docker 容器。GID=100 是一个支持的值。您可以为用户添加 sudo 访问权限。对IDs它们进行了重新映射,以防止容器中运行的进程拥有超出必要权限的权限。

  • 元数据目录-使用的/opt/.sagemakerinternal/opt/ml目录 AWS。中的元数据文件/opt/ml包含有关资源的元数据,例如DomainId

    使用以下命令显示文件系统的内容:

    cat /opt/ml/metadata/resource-metadata.json {"AppType":"CodeEditor","DomainId":"example-domain-id","UserProfileName":"example-user-profile-name,"ResourceArn":"arn:aws:sagemaker:AWS 区域:111122223333;:app/domain-ID/user-ID/CodeEditor/default","ResourceName":"default","AppImageVersion":"current"}
  • 日志目录 — /var/log/studio 保留给代码编辑器的日志目录以及与之相关的扩展。我们建议您不要使用这些文件夹来创建图像。

Health check 和URL应用程序

  • Base URL— BYOI 应用程序URL的基础必须是codeeditor/default。您只能有一个应用程序,并且必须始终为其命名default

  • Health check 端点 — 您必须将代码编辑器服务器托管在 0.0.0.0 端口 8888 才能对其进行 SageMaker 检测。

  • 身份验证-打开--without-connection-tokensagemaker-code-editor时必须通过才能对用户进行身份验证。 SageMaker

注意

如果您使用 Amazon Distrib SageMaker ution 作为基础图片,则这些要求已作为随附entrypoint-code-editor脚本的一部分得到满足。

Dockerfile 示例

以下是 Dockerfile 示例,它符合前几节中列出的使用micromamba基本环境从头开始创建映像的规范:

FROM mambaorg/micromamba:latest ARG NB_USER="sagemaker-user" ARG NB_UID=1000 ARG NB_GID=100 USER root RUN micromamba install -y --name base -c conda-forge sagemaker-code-editor USER $NB_UID CMD eval "$(micromamba shell hook --shell=bash)"; \ micromamba activate base; \ sagemaker-code-editor --host 0.0.0.0 --port 8888 \ --without-connection-token \ --base-path "/CodeEditor/default"

以下是 Dockerfile 示例,它符合前几节中列出的基于亚马逊 SageMaker分发创建映像的规范:

FROM public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu ARG NB_USER="sagemaker-user" ARG NB_UID=1000 ARG NB_GID=100 ENV MAMBA_USER=$NB_USER USER root # install scrapy in the base environment RUN micromamba install -y --name base -c conda-forge scrapy # download VSCodeVim RUN \ wget https://github.com/VSCodeVim/Vim/releases/download/v1.27.2/vim-1.27.2.vsix \ -P /tmp/exts/ --no-check-certificate # Install the extension RUN \ extensionloc=/opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions \ && sagemaker-code-editor \ --install-extension "/tmp/exts/vim-1.27.2.vsix" \ --extensions-dir "${extensionloc}" USER $MAMBA_USER ENTRYPOINT ["entrypoint-code-editor"]