Skip To Content

Extend a notebook runtime

ArcGIS Notebook Server includes two notebook runtimes (collections of Python modules). These runtimes are available to notebook users through container images, which are applied to each container that runs in your server site.

Both the Standard and Advanced notebook runtimes include ArcGIS API for Python and various Python modules that can be used for data science, spatial analysis, content management, and administration. The Advanced runtime also includes ArcPy.

See the list of available Python libraries

In some cases, your notebook authors may need modules or specific versions of modules that are not included in these two runtimes. You can access additional Python modules in ArcGIS Notebook Server in the following ways:

  • Install a Python module during a notebook session. This makes the module available for use in that notebook.
  • Extend an Esri container image to include additional Python libraries in a custom runtime. The container image you create will make the extended runtime available to all notebook authors in your site.

Install modules during a session

Notebook authors can make Python modules, or versions of modules, that are not included in either runtime available for use during a notebook session using the conda or pip package management systems. It is recommended that you use conda, because ArcGIS Notebook Server uses it to manage modules; however, some Python modules are only available in pip.

This approach installs the desired module for the duration of the notebook session. Once the notebook is closed or the container belonging to the user is terminated, the module is no longer available. To install modules using this method, users must have internet connectivity to the conda or pip channel.

Note:

Both conda and pip are included in the two notebook runtimes. You do not need to install them.

To install the scrapy package during a session, for example, run a notebook cell with one of the following commands, depending on the package management system you're using:

Using the conda package management system

!conda install --yes scrapy

Using the pip package management system

!pip install scrapy

To use a different version of a Python module in the notebook runtime you're working in, specify the version number in the command.

You must restart the kernel after running a conda or pip command for your new package to be available.

For example, a certain package is available in both notebook runtimes at version 1.5, but you want to use a tool introduced in 1.6. To make version 1.6 of the package available during a notebook session, run a notebook cell with one of the following commands, depending on the package management system you're using:

Using the conda package management system

!conda install --yes <package name>==1.6

Using the pip package management system

!pip install <package name>==1.6

Build a custom container image

To make persistent changes to a notebook runtime, you can build a custom container image in a site. The following workflow, which requires administrative privileges, creates a custom image and configures ArcGIS Notebook Server to use it.

Use either of the two notebook runtimes (Standard or Advanced) as a starting point. Once you have built your custom runtime, you can register it as a new runtime in your site.

  1. Install and configure ArcGIS Notebook Server.
  2. Sign in to the ArcGIS Notebook Server Administrator Directory as an administrator.

    The URL is formatted as https://notebookserver.domain.com:11443/arcgis/admin/.

  3. Click notebooks > runtimes and select the notebook runtime you want to extend for your custom image.

    On the runtime's resource page, note the imageId value for this runtime. You will include this value in the next step.

  4. Create a Dockerfile that adds your desired Python modules to the custom image.

    A Dockerfile is a simple text file of instructions to build a Docker container image. Follow the Dockerfile documentation for information and best practices.

    In this example, you'll add the data visualization Python package graphviz to the Advanced notebook runtime. The following code block in your Dockerfile instructs Docker to access the Advanced runtime using its imageId value and to install graphviz in the runtime. The conda clean command is a best practice to reduce file size.

    # Specify the existing notebook runtime imageId as FROM
    FROM aa7a1a346e5b
    
    # Use RUN to issue a command to install, then clean
    RUN conda install graphviz \
      && conda clean -y -a

    In this example, you will create a custom runtime that includes Oracle client libraries.

    ## Using a Dockerfile to build a custom notebook runtime that includes Oracle client
    FROM <replace with imageId of standard or advanced container image>
    
    ## Switch to root user for installing OS level packages. 
    USER root
    
    ## Combine OS level statements for Docker image efficiency
    RUN apt-get update && \
            apt-get install -y alien
    ## Update the url below to the desired version of Oracle client.
    RUN wget https://yum.oracle.com/repo/OracleLinux/OL8/oracle/instantclient/x86_64/getPackage/oracle-instantclient19.10-basic-19.10.0.0.0-1.x86_64.rpm
    RUN alien -i oracle-instantclient19.10-basic-19.10.0.0.0-1.x86_64.rpm
    
    ## Installing libaio1 is required only for Notebook runtimes version 5 (10.9) or earlier.  
    RUN apt-get install -y libaio1
    
    ## Switch back to arcgis user at end of the Dockerfile
    USER arcgis
  5. Save your Dockerfile on the machine in a new folder that only contains the Dockerfile.
  6. Build your new custom container image using a Docker command.

    This image will contain a new runtime as specified in your Dockerfile. Open a terminal and run a command with the following syntax:

    docker build -t <name of my new runtime>:v1.0 -f <path to my Dockerfile> .
    Note:

    Be sure to include the period at the end of the command.

    When the command runs, Docker builds the new container image. The last line in the command output will be Successfully built <imageId> with the abridged ID value of the new image. You must provide your ArcGIS Notebook Server site with its full imageId value.

  7. Run the following command in your terminal to get the image ID value:

    docker inspect <imageId>

Your custom image is now built and you have its full imageId value, which you will use to register it with the ArcGIS Notebook Server site in the next section.

Register a new runtime in Manager

Starting at 10.8, you can use ArcGIS Notebook Server Manager to register a custom runtime you've created.

  1. Sign in to your ArcGIS Enterprise portal as an administrator and open ArcGIS Notebook Server Manager.
  2. Open the Settings page and click Runtimes.
  3. Click Register Runtime to open the registration dialog box.
  4. Specify the appropriate values to complete the registration.

    ParameterDetails

    Name

    (Required)

    A string to represent the new runtime, such as "Notebook Custom Runtime Python 3".

    Image id

    (Required)

    Full (nontruncated) ID for the new Docker image, when it was built.

    Container type

    (Optional)

    The only valid value is docker.

    Advanced privileges

    (Required)

    Switch on if the runtime requires the Advanced notebooks privilege.

    Image pull string

    (Optional)

    Not applicable.

    Max CPU

    (Required)

    The maximum number of CPU units to be used for each container.

    Max memory

    (Required)

    The maximum amount of memory to be used for each container.

    Max memory unit

    (Required)

    The unit specified by the maxMemory parameter.

    Max swap memory

    (Optional)

    The maximum amount of swap memory available for each container if it reaches the maxMemory limit.

    Max swap memory unit

    (Optional)

    The unit specified by the maxSwapMemory parameter.

    Shared memory

    (Optional)

    The amount of shared memory available for each container.

    Shared memory unit

    (Optional)

    The unit specified by the sharedMemory parameter.

    Library manifest

    (Optional)

    A *.json file (in UTF-8 or ANSI encoding) containing the list of Python libraries in the runtime.

    Docker runtime

    (Optional)

    Only applies to GPU runtimes in Linux environments.

    Learn more about ArcGIS Notebook Server and GPUs.

    Note:

    To create a manifest.json file, open a terminal on the ArcGIS Notebook Server machine where the custom notebook runtime image is installed and run the following command:

    ID=$(docker container run -d --rm -it -v /:/host <custom_runtime_image_ID> /bin/bash) && docker exec -it $ID /opt/conda/bin/conda list --json >> ~/manifest.json && docker kill $ID
  5. When you're ready, click Save to register the new runtime.
  6. Open a new notebook to test this update. Verify that the modules or versions of modules you added to your custom image are available in the notebook.

To return the runtimes in your ArcGIS Notebook Server site to the original settings, use the Restore Factory Runtimes operation in the Administrator Directory. This is available at https://notebookserver.domain.com:11443/arcgis/admin/notebooks/runtimes/restore and will only restore the factory runtimes for your site's current version.