Adición de personalizaciones a imágenes
Después de descargar la imagen del tiempo de ejecución que desea personalizar, puede crear una nueva imagen personalizada añadiendo sus personalizaciones de software a la imagen descargada.
Las personalizaciones permiten una amplia gama de modificaciones de la imagen, incluida la instalación de:
- Paquetes Conda y pip y dependencias del sistema operativo
- Extensiones del cuaderno de Jupyter
- Extensiones deJupyterLab
- Paquetes R en RStudio images
Consulte los pasos siguientes para obtener detalles sobre el procedimiento general:
Pasos generales para crear imágenes personalizadas
Cree los tres scripts siguientes en un directorio vacío y personalice cada script para que se ajuste a sus necesidades.
En un directorio vacío, cree el siguiente
Dockerfile:ARG base_image_tag FROM ${base_image_tag} # ============ # root section # ============ USER root:root COPY install-as-root.sh /tmp/install/ RUN umask 022 \ && bash /tmp/install/install-as-root.sh \ && /opt/ibm/build/bin/microdnf-clean.sh \ && rm -rf /tmp/install # The microdnf-clean.sh script also grants required permissions. # ----------------------------------------- # Change display name of the Jupyter kernel # ----------------------------------------- # Changing the display name of the kernel allows for distinguishing different # custom images from the default runtime images when editing a notebook. # It is good practice, but not strictly required. RUN sed -i -e '/display_name/{s/",/ with modifications",/}' \ /opt/ibm/run/kernels/*/kernel.json # ============ # user section # ============ USER wsbuild:wsbuild COPY --chown=wsbuild install-as-user.sh /tmp/install/ RUN umask 002 \ && bash /tmp/install/install-as-user.sh \ && /opt/ibm/build/bin/fix-conda-permissions.sh \ && conda run -n $DSX_KERNEL_CONDENV pip cache purge \ && conda clean --tarballs \ && rm -rf /tmp/install # ==== # conda # ==== USER nobody:wsbuildEdite el script
Dockerfile:- Si añade archivos a la imagen personalizada, coloque las sentencias COPY en la sección raíz o en la sección de usuario del Dockerfile. Los archivos y directorios que deben ser grabables para los usuarios deben ser propiedad del grupo "wsbuild" (gid 3000) y tener permiso de escritura de grupo.
- Opcionalmente, en la línea RUN sed, edite el comentario para incluir información para editores de cuadernos que les indique qué imagen personalizada están utilizando.
A continuación, cree el siguiente script
install-as-root.sh:#!/bin/bash set -e -o pipefail # ============================================================================= # Commands in this script will be executed as root. Use this to... # - install operating system packages # - modify the installed JupyterLab and Notebook servers # # The IBM runtime images are based on Red Hat UBI minimal. # The package manager is microdnf, it uses yum repositories. # ============================================================================= # update all operating system packages microdnf update -yAñada mandatos al final de
install-as-root.shsi desea instalar paquetes del sistema operativo o realizar otras modificaciones que requieran permiso root. Por ejemplo, para instalar el paquetepoppler-utilsy sus dependencias desde los repositorios UBI de RedHat , añada:microdnf install -y --nodocs poppler-utilsPor último, cree el script
install-as-user.sh:#!/bin/bash set -e -o pipefail source activate $DSX_KERNEL_CONDENV # subsequent commands affect the conda environment for user codeEdite
install-as-user.shy añada mandatos al final del script si desea instalar paquetes Python o R en el entorno conda donde se ejecutará el código de usuario. Por ejemplo, para instalar el paquetepy4jdel canal principal de Anaconda, y el paqueteseawaterde PyPI, añade:conda install py4j pip install seawaterDebe instalar todos los paquetes conda antes que los paquetes pip. Además, debe instalar paquetes pip desde repositorios públicos como PyPI antes de añadir paquetes pip o ruedas utilizando COPY a la imagen personalizada.
Ejemplos de personalizaciones
Los ejemplos siguientes muestran diferentes formas en las que se pueden personalizar los tiempos de ejecución. Además de la instalación de bibliotecas a través de conda y pip, se pueden instalar extensiones como JupyterLab y extensiones de cuaderno Jupyter. Además, es posible personalizar RStudio utilizando el mismo método descrito anteriormente. Sin embargo, además de los entornos basados en Python, también es posible instalar paquetes desde CRAN.
Instalación de extensiones de cuaderno de Jupyter
El fragmento de código siguiente muestra los cambios necesarios en install-as-user.sh para instalar y habilitar las dos extensiones de cuaderno codefolding y freeze:
#!/bin/bash
set -e -o pipefail
source /opt/ibm/build/bin/installutils.sh
source activate $DSX_SYSTEM_CONDENV
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --symlink
jupyter nbextension enable codefolding/main --system
jupyter nbextension enable freeze/main --system
Instalación de extensiones de JupyterLab
El fragmento de código siguiente muestra los cambios necesarios en install-as-user.sh para instalar y habilitar las dos extensiones de JupyterLab jupyterlab-spreadsheet-editor y lckr-jupyterlab-variableinspector:
#!/bin/bash
set -e -o pipefail
source /opt/ibm/build/bin/installutils.sh
conda run -n $DSX_SYSTEM_CONDENV pip install \
lckr-jupyterlab-variableinspector \
jupyterlab-spreadsheet-editor
fix-condenv-access-system
Instalación de paquetes R en RStudio
El fragmento de código siguiente muestra los cambios necesarios en install-as-user.sh para instalar el paquete R foreign:
#!/bin/bash
set -e -o pipefail
source activate $DSX_KERNEL_CONDENV
# subsequent commands affect the conda environment for user code
# ========================================================
# Install R packages from CRAN or tar.gz file or conda repository
# below example installed foreign test package
# users can add any other additional packages similar way
# =======================================================
R -e "install.packages('foreign', repos='http://cran.rstudio.com')"
Consulte la sección Prácticas recomendadas para obtener más información.
Tema padre: Creación de una imagen personalizada