Especificaciones de Dockerfile - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Especificaciones de Dockerfile

La imagen que especifique en su Dockerfile debe coincidir con las especificaciones de las siguientes secciones para crear la imagen correctamente.

Ejecutar la imagen

  • Entrypoint— Recomendamos incrustar el punto de entrada en la imagen siguiendo las Docker CMD instrucciones o. Entrypoint También puede configurarlos ContainerEntrypoint y ContainerArguments pasarlos al contenedor en tiempo de ejecución.

  • EnvVariables— Con Studio, puede configurar ContainerEnvironment las variables que están disponibles en un contenedor. La variable de entorno se sobrescribe con las variables de entorno de SageMaker. Para proporcionarle una mejor experiencia, las variables de entorno suelen ser AWS_ y dar prioridad SageMaker_namespaced a los entornos de plataforma.

    Las siguientes son las variables de entorno:

    • AWS_REGION

    • AWS_DEFAULT_REGION

    • AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

    • SageMaker_SPACE_NAME

Especificaciones para el usuario y el sistema de archivos

  • WorkingDirectory— El volumen de Amazon EBS de su espacio está montado en la ruta/home/sagemaker-user. No puede cambiar la ruta de montaje. Usa las WORKDIR instrucciones para establecer el directorio de trabajo de tu imagen en una carpeta interna/home/sagemaker-user.

  • UID— El seudónimo del Docker contenedor. El UID=1000 es un valor admitido. Puede añadir el acceso de sudo a sus usuarios. Los ID se han reasignado para evitar que un proceso que se ejecuta en el contenedor tenga más privilegios de los necesarios.

  • GID— El ID de grupo del Docker contenedor. GID=100 es un valor admitido. Puede añadir el acceso sudo a sus usuarios. Los ID se han reasignado para evitar que un proceso que se ejecuta en el contenedor tenga más privilegios de los necesarios.

  • Directorios de metadatos: los /opt/ml directorios /opt/.sagemakerintenral y que utiliza. AWS El archivo de metadatos /opt/ml contiene metadatos sobre recursos comoDomainId.

    Utilice el siguiente comando para mostrar el contenido del sistema de archivos:

    cat /opt/ml/metadata/resource-metadata.json {"AppType":"JupyterLab","DomainId":"example-domain-id","UserProfileName":"example-user-profile-name,"ResourceArn":"arn:aws:sagemaker:Región de AWS:111122223333;:app/domain-ID/user-ID/Jupyte rLab/default","ResourceName":"default","AppImageVersion":"current"}
  • Directorios de registro: /var/logs/studio están reservados para los directorios de registro JupyterLab y las extensiones asociadas a ellos. Se recomienda no utilizar las carpetas al crear la imagen.

Health Check y URL de las aplicaciones

  • Base URL— La URL base de la aplicación BYOI debe serjupyterlab/default. Solo puede tener una aplicación y siempre debe tener un nombredefault.

  • HealthCheck APIHostAgent Utiliza HealthCheckAPI el puerto 8888 para comprobar el estado de la JupyterLab aplicación. jupyterlab/default/api/statuses el punto final del chequeo de estado.

  • Home/Default URL— Los /opt/ml directorios /opt/.sagemakerinternal y que utiliza AWS. El archivo de metadatos /opt/ml contiene metadatos sobre recursos comoDomainId.

  • Autenticación: para habilitar la autenticación de sus usuarios, desactive la autenticación basada en token o contraseña de Jupyter notebooks y permita todos los orígenes.

El siguiente es un ejemplo Amazon Linux 2 Dockerfile que cumple con las especificaciones 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='*'

La siguiente es una muestra Amazon SageMaker Distribution Dockerfile que cumple con las especificaciones 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"]