本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Dockerfile 规格
您在 Dockerfile 中指定的镜像必须符合以下各节中的规格才能成功创建镜像。
运行映像
-
Entrypoint
— 我们建议使用将入口点嵌入到图像中 DockerCMD
或Entrypoint
说明。您还可以配置在运行时传递到容器的ContainerEntrypoint
和ContainerArguments
。有关更多信息,请参阅CodeEditorAppImageConfig
。 -
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/.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-token
sagemaker-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"
]