Dockerfile 规格 - Amazon SageMaker

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

Dockerfile 规格

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

运行映像

  • Entrypoint— 我们建议使用DockerCMDEntrypoint说明将入口点嵌入到图像中。您还可以配置在运行时传递到容器的ContainerEntrypointContainerArguments

  • 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— Docker 容器的用户 ID。UID=1000 是一个支持的值。您可以为用户添加 sudo 访问权限。重新映射 ID 是为了防止容器中运行的进程拥有超出必要权限的权限。

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

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

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

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

应用程序的 Health 检查和 URL

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

  • HealthCheck APIHostAgent 使用 HealthCheckAPI at 端口 8888 来检查 JupyterLab 应用程序的运行状况。 jupyterlab/default/api/status是运行状况检查的终端节点。

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

  • 身份验证 — 要为用户启用身份验证,请关闭 Jupyter 笔记本令牌或基于密码的身份验证并允许所有来源。

以下是符合上述规范Amazon Linux 2Dockerfile的示例:

FROM public.ecr.aws/amazonlinux/amazonlinux:2 ARG NB_USER="sagemaker-user" ARG NB_UID="1000" ARG NB_GID="100" RUN yum install --assumeyes python3 shadow-utils && \ useradd --create-home --shell /bin/bash --gid "${NB_GID}" --uid ${NB_UID} ${NB_USER} && \ yum clean all && \ python3 -m pip install jupyterlab RUN python3 -m pip install --upgrade pip RUN python3 -m pip install --upgrade urllib3==1.26.6 USER ${NB_UID} CMD jupyter lab --ip 0.0.0.0 --port 8888 \ --ServerApp.base_url="/jupyterlab/default" \ --ServerApp.token='' \ --ServerApp.allow_origin='*'

以下是符合上述规范Amazon SageMaker DistributionDockerfile的示例:

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 RUN apt-get update RUN micromamba install sagemaker-inference --freeze-installed --yes --channel conda-forge --name base USER $MAMBA_USER ENTRYPOINT ["jupyter-lab"] CMD ["--ServerApp.ip=0.0.0.0", "--ServerApp.port=8888", "--ServerApp.allow_origin=*", "--ServerApp.token=''", "--ServerApp.base_url=/jupyterlab/default"]