Dockerfile の仕様 - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Dockerfile の仕様

Dockerfile で指定するイメージは、イメージを正常に作成するには、次のセクションの仕様と一致する必要があります。

イメージを実行する

  • Entrypoint – を使用して、イメージにエントリポイントを埋め込むことをお勧めします。Docker CMD または Entrypoint の手順。ランタイムにコンテナに渡ContainerArgumentsされる ContainerEntrypointと を設定することもできます。

  • EnvVariables – Studio では、コンテナで使用できるContainerEnvironment変数を設定できます。環境変数は、 の環境変数で上書きされます SageMaker。エクスペリエンスを向上させるために、環境変数は通常 AWS_でありSageMaker_namespaced、プラットフォーム環境を優先します。

    環境変数は次のとおりです。

    • 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 – URLBYOIアプリケーションのベースは である必要がありますjupyterlab/default。アプリケーションは 1 つだけ持つことができ、常に という名前にする必要がありますdefault

  • HealthCheck API – はポート 8888 HealthCheckAPIHostAgent を使用して 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"]