本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Dockerfile 規格
您在 Dockerfile 中指定的映像必須符合下列各節中的規格,才能成功建立映像。
執行映像
-
Entrypoint
– 我們建議您使用 將進入點內嵌至映像中 DockerCMD
或Entrypoint
指示。您也可以設定ContainerArguments
ContainerEntrypoint
,並在執行階段傳遞至容器。 -
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/.sagemakerintenral
和 使用的/opt/ml
目錄 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 以及與其相關聯的擴充功能。建議您不要在建立映像時使用資料夾。
運作狀態檢查和URL應用程式
-
Base URL
– BYOI 應用程式URL的基礎必須是jupyterlab/default
。您只能有一個應用程式,且必須一律命名為default
。 -
HealthCheck API
–HostAgent
使用HealthCheckAPI
連接埠 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"]