本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
您在 Dockerfile 中指定的映像必须符合以下各节中的规范,才能成功创建映像。
运行映像
-
Entrypoint
— 我们建议使用将入口点嵌入到图像中 DockerCMD
或Entrypoint
说明。您还可以配置运行时传递给容器的ContainerEntrypoint
和ContainerArguments
。 -
EnvVariables
:使用 Studio,您可以配置容器可用的ContainerEnvironment
变量。环境变量被来自 SageMaker AI 的环境变量覆盖。为了给您提供更好的体验,环境变量通常为AWS_
和SageMaker AI_namespaced
,以便优先考虑平台环境。以下是环境变量:
-
AWS_REGION
-
AWS_DEFAULT_REGION
-
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
-
SageMaker AI_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/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/log/studio
保留给的日志目录 JupyterLab 以及与之关联的扩展。我们建议您在创建映像时不要使用文件夹。
应用程序的运行状况检查和 URL
-
Base URL
:BYOI 应用程序的基本 URL 必须为jupyterlab/default
。您只能有一个应用程序,且必须始终命名为default
。 -
HealthCheck API
—HostAgent
使用HealthCheckAPI
at 端口 8888 来检查 JupyterLab 应用程序的运行状况。jupyterlab/default/api/status
是运行状况检查的终端节点。 -
Home/Default URL
— 使用的/opt/.sagemakerinternal
和/opt/ml
目录 AWS。/opt/ml
中的元数据文件包含有关DomainId
等资源的元数据。 -
身份验证:要为用户启用身份验证,请关闭基于令牌或密码的 Jupyter Notebook 身份验证,并允许所有来源。
以下是示例 Amazon Linux 2 Dockerfile 符合上述规范:
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 Distribution Dockerfile 符合上述规范:
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"]