本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Dockerfile 规格
您在 Dockerfile 中指定的镜像必须符合以下各节中的规格才能成功创建镜像。
运行映像
-
Entrypoint
— 我们建议使用将入口点嵌入到图像中 DockerCMD
或Entrypoint
说明。您还可以配置在运行时传递到容器的ContainerEntrypoint
和ContainerArguments
。 -
EnvVariables
— 使用 Studio,您可以配置可供容器使用的ContainerEnvironment
变量。环境变量会被来自 SageMaker的环境变量覆盖。为了向您提供更好的体验,环境变量通常是SageMaker_namespaced
,AWS_
并且优先考虑平台环境。以下是环境变量:
-
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/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 check 和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 笔记本令牌或基于密码的身份验证并允许所有来源。
以下是示例 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"]