Skip To Content

扩展 notebook 运行时

ArcGIS Notebook Server 包含两个 notebook 运行时(Python 模块的集合)。 这些运行时会通过容器映像提供给 notebook 用户,容器映像应用于您服务器站点中运行的每个容器。

标准和高级 notebook 运行时都包括 ArcGIS API for Python 和多种 Python 模块,可用于数据科学、空间分析和内容管理。 高级运行时还包括 ArcPy。

请参阅可用 Python 库的列表

在某些情况下,您的 notebook 创作者可能需要这两个运行时中未包含的模块或特定版本的模块。 您可以通过以下方法在 ArcGIS Notebook Server 中访问附加 Python 模块:

  • 在 notebook 会话期间安装一个 Python 模块。 该模块即可用于该 notebook。
  • 扩展 Esri 容器映像以在自定义运行时中包含其他 Python 库。 您创建的容器映像将使您站点中的所有 notebook 创作者都可使用扩展的运行时。

在会话期间安装模块

Notebook 创作者可以在 notebook 会话期间通过使用 condapip 包管理程序系统安装两个运行时中未包含的 Python 模块或版本模块以供使用。 建议您使用 conda,因为 ArcGIS Notebook Server 将使用其来管理模块;但是,一些 Python 模块仅在 pip 中可用。

该方法将在 notebook 会话期间安装所需模块。 关闭 notebook 或终止属于用户的容器后,该模块将不再可用。 要使用此方法安装模块,用户必须经 Internet 连接到 condapip 信道。

注:

condapip 都包含于两个 notebook 运行时中。 无需进行安装。

例如,要在会话期间安装 scrapy 包,请使用以下其中一个命令运行 notebook 单元格,具体取决于您所使用的包管理系统:

使用 conda 包管理系统

!conda install --yes scrapy

使用 pip 包管理系统

!pip install scrapy

要在使用中的 notebook 运行时中使用不同版本的 Python 模块,请在命令中指定版本号。

运行 condapip 命令之后必须重新启动内核以使新包可用。

例如,某个软件包在 1.5 版本的两个 notebook 运行时都可用,但您想使用 1.6 版本中引入的工具。 要在 notebook 会话期间使用 1.6 版本的包,请使用以下其中一个命令运行 notebook 单元格,具体取决于您所使用的包管理系统:

使用 conda 包管理系统

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

使用 pip 包管理系统

!pip install <package name>==1.6

构建自定义容器映像

要对 notebook 运行时进行持久更改,则可以在站点中构建自定义容器映像。 以下工作流需要管理权限,可创建自定义映像并为其使用配置 ArcGIS Notebook Server

可以使用两个 notebook 运行时之一(标准或高级)作为起点。 构建自定义运行时之后,可以将其注册为站点中的新运行时。

  1. 安装并配置 ArcGIS Notebook Server
  2. 以管理员身份登录到 ArcGIS Notebook Server Administrator Directory。

    URL 地址格式为 https://notebookserver.domain.com:11443/arcgis/admin/

  3. 单击 notebook > 运行时,然后选择要为自定义映像扩展的 notebook 运行时。

    在运行时的资源页面上,记录该运行时的 imageId 值。 在下一步骤中将使用该值。

  4. 创建一个 Dockerfile,将所需 Python 模块添加到自定义映像。

    Dockerfile 是一个简单的指令文本文件,可用于构建 Docker 容器映像。 请参阅 Dockerfile 文档了解其详细信息及最佳实践。

    在此示例中,需要向高级 notebook 运行时添加数据可视化 Pythongraphviz。 Dockerfile 中的以下代码块将控制 Docker 使用 imageId 值访问高级运行时,然后在运行时中安装 graphviz。 该 conda clean 命令是减少文件大小的最佳做法。

    # 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

    在此示例中,您将创建一个包含 Oracle 客户端库的自定义运行时。

    ## 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. 将 Dockerfile 保存于计算机上只包含 Dockerfile 的新文件夹。
  6. 使用 Docker 命令构建新自定义容器映像。

    该映像将包含 Dockerfile 中指定的新运行时。 打开终端并使用以下语法运行命令:

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

    请确保命令以句点结尾。

    执行命令后,Docker 将构建新的容器映像。 命令输出中的最后一行为 Successfully built <imageId>,其中包含新映像的简化 ID 值。 您必须为 ArcGIS Notebook Server 站点提供其完整 imageId 值。

  7. 在终端中运行以下命令以获取映像 ID 值:

    docker inspect <imageId>

您的自定义影像现已构建,并且您拥有完整的 imageId 值,您可以使用该值将自定义影像注册到下一部分中的 ArcGIS Notebook Server 站点。

在 Manager 中注册新的运行时

自 10.8 起,您可以使用 ArcGIS Notebook Server Manager 注册您已经创建的自定义运行时。

  1. 以管理员身份登录到您的 ArcGIS Enterprise 门户,然后打开 ArcGIS Notebook Server Manager
  2. 打开设置页面并单击运行时
  3. 单击注册运行时以打开注册对话框。
  4. 指定适当的值以完成注册。

    参数详细信息
    Name

    表示新运行时的字符串,例如“Notebook Custom Runtime Python 3”。

    Version

    用作基础 Docker 镜像的由 Esri 提供的运行时版本。

    Image ID

    构建镜像时给出的新 Docker 镜像的完整(非截断)ID。

    Container Type

    (可选)唯一有效值是“Docker”。

    Image pull string

    (可选)不适用。

    Advanced privileges required?

    如果新的 notebook 运行时从 ArcGIS Notebook Python 3 Advanced 运行时扩展,并且需要使用高级 notebook 权限,请选中此框。

    Max CPU

    每个容器使用的最大 CPU 单元数。

    Max memory

    每个容器使用的内存上限值。

    Max memory unit

    最大内存参数指定的单位。

    Max swap memory

    (可选)每个容器达到最大内存限制时可用的交换内存上限值。

    Max swap memory unit

    (可选)最大交换内存参数指定的单位。

    Shared memory

    (可选)每个容器可用的共享内存量。

    Shared memory unit

    (可选)共享内存参数指定的单位。

    Docker runtime

    (可选)仅适用于 GPU 运行时。了解详细信息

    Library manifest

    (可选)以 JSON 格式上传文件,其中包含此运行时包括的 Python 库列表。

    Format

    默认响应格式。默认响应格式为 html

    值:html | json | pjson

    注:

    要创建 manifest.json 文件,请在安装了自定义 notebook 运行时图像的 ArcGIS Notebook Server 计算机上打开终端并运行以下命令:

    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. 准备就绪后,单击保存以注册新的运行时。
  6. 打开新的 notebook 以测试此更新。 确认您添加到自定义映像的模块或模块版本在 notebook 中可用。

要将 ArcGIS Notebook Server 站点中的运行时恢复为原始设置,请使用 Administrator Directory 中的恢复出厂运行时操作。 该操作在 https://notebookserver.domain.com:11443/arcgis/admin/notebooks/runtimes/restore 中提供,并且只会恢复当前站点版本的工厂运行时。