Especificações do Dockerfile - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Especificações do Dockerfile

A imagem que você especifica em seu Dockerfile deve corresponder às especificações nas seções a seguir para criar a imagem com sucesso.

Executando a imagem

  • Entrypoint— Recomendamos incorporar o ponto de entrada na imagem usando o Docker CMDou Entrypoint instruções. Você também pode configurar ContainerEntrypoint e ContainerArguments que são passados para o contêiner em tempo de execução.

  • EnvVariables— Com o Studio, você pode configurar ContainerEnvironment variáveis que são disponibilizadas para um contêiner. A variável de ambiente é substituída pelas variáveis de ambiente de SageMaker. Para proporcionar uma experiência melhor, as variáveis de ambiente geralmente são AWS_ e dão prioridade SageMaker_namespaced aos ambientes da plataforma.

    A seguir estão as variáveis de ambiente:

    • AWS_REGION

    • AWS_DEFAULT_REGION

    • AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

    • SageMaker_SPACE_NAME

Especificações para o usuário e o sistema de arquivos

  • WorkingDirectory— O EBS volume Amazon do seu espaço está montado no caminho/home/sagemaker-user. Você não pode mudar o caminho da montagem. Use as WORKDIR instruções para definir o diretório de trabalho da sua imagem como uma pasta interna/home/sagemaker-user.

  • UID— O ID do usuário do Docker recipiente. UID=1000 é um valor suportado. Você pode adicionar acesso sudo aos seus usuários. Eles IDs são remapeados para evitar que um processo em execução no contêiner tenha mais privilégios do que o necessário.

  • GID— O ID do grupo do Docker recipiente. GID=100 é um valor suportado. Você pode adicionar acesso sudo aos seus usuários. Eles IDs são remapeados para evitar que um processo em execução no contêiner tenha mais privilégios do que o necessário.

  • Diretórios de metadados — Os /opt/ml diretórios /opt/.sagemakerintenral e que são usados pelo. AWS O arquivo de metadados /opt/ml contém metadados sobre recursos como. DomainId

    Use o comando a seguir para mostrar o conteúdo do sistema de arquivos:

    cat /opt/ml/metadata/resource-metadata.json {"AppType":"JupyterLab","DomainId":"example-domain-id","UserProfileName":"example-user-profile-name,"ResourceArn":"arn:aws:sagemaker:Região da AWS:111122223333;:app/domain-ID/user-ID/Jupyte rLab/default","ResourceName":"default","AppImageVersion":"current"}
  • Diretórios de registro — /var/logs/studio são reservados para os diretórios de registro JupyterLab e as extensões associadas a eles. Recomendamos que você não use as pastas para criar sua imagem.

Health Check e URL para aplicativos

  • Base URL— A base URL para o BYOI aplicativo deve serjupyterlab/default. Você só pode ter um aplicativo e ele deve sempre ter um nomedefault.

  • HealthCheck APIHostAgent Ele usa a porta HealthCheckAPI at 8888 para verificar a integridade do JupyterLab aplicativo. jupyterlab/default/api/statusé o endpoint para a verificação de saúde.

  • Home/Default URL— Os /opt/ml diretórios /opt/.sagemakerinternal e que são usados por AWS. O arquivo de metadados /opt/ml contém metadados sobre recursos como. DomainId

  • Autenticação — Para habilitar a autenticação para seus usuários, desative a autenticação baseada em token ou senha dos notebooks Jupyter e permita todas as origens.

O seguinte é um exemplo Amazon Linux 2 Dockerfile que atenda às especificações anteriores:

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='*'

O seguinte é um exemplo Amazon SageMaker Distribution Dockerfile que atenda às especificações anteriores:

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"]