Skip To Content

扩展笔记本运行时

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

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

请参阅可用 Python 库的列表

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

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

在会话期间安装模块

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

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

注:

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

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

使用 conda 包管理系统

!conda install --yes scrapy

使用 pip 包管理系统

!pip install scrapy

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

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

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

使用 conda 包管理系统

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

使用 pip 包管理系统

!pip install <package name>==1.6

构建自定义容器映像

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

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

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

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

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

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

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

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

    在此示例中,需要向高级笔记本运行时添加数据可视化 Pythongraphviz。 Dockerfile 中的以下代码块将控制 Docker 使用其 repository 名称和 tag 访问高级运行时,然后在运行时中安装 graphviz。 您可以在安装运行时的 ArcGIS Notebook Server 计算机上使用 docker images 命令获取 repository 名称和 tag。 该 conda clean 命令是减少文件大小的最佳做法。

    针对现有笔记本运行时使用 docker images 命令获取映像名称(资料档案库)和标签。

    
    docker images
    
    REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
    arcgis-notebook-python-advanced   10.8.1.14362        e46a81f69ea0        12 months ago       12.4GB
    arcgis-notebook-python-standard   10.8.1.14362        106a660a4d0b        12 months ago       7.51GB

    通过向高级笔记本运行时添加数据可视化 Pythongraphviz 来创建自定义运行时。

    # Specify the existing notebook runtime imageId as FROM
    FROM arcgis-notebook-python-advanced:10.8.1.14362
    
    # Use RUN to issue a command to install, then clean
    RUN conda install graphviz \
      && conda clean -y -a
  5. 将 Dockerfile 保存于计算机上只包含 Dockerfile 的新文件夹。
  6. 使用 Docker 命令构建新自定义容器映像。

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

    docker build -t arcgis-notebook-python-advanced-custom:10.8.1.14362 -f /data/DockerfileDir/Dockerfile .
    注:

    请确保命令以句点结尾。

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

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

    docker inspect <imageId>

    如果您拥有单机 Notebook Server 站点,可以跳过步骤 8 到步骤 10。 如果您拥有多机 Notebook Server 站点,请完成步骤 8 到步骤 10。

  8. 使用 docker save 将自定义 Docker 映像另存为 *.tar 文件。

    在安装自定义运行时映像的 Notebook Server 计算机上打开命令窗口并运行以下命令以将自定义运行时映像另存为 *.tar 文件。

     docker save arcgis-notebook-python-advanced-custom:10.8.1.14362 > arcgis-notebook-python-advanced-custom.tar

  9. 在安装 Notebook Server 的每台计算机上,使用 ArcGIS Notebook Server 安装后配置实用程序加载自定义运行时映像。
    1. 以管理员身份启动命令提示符。
    2. 将目录更改为 ArcGIS Notebook Server 安装后配置实用程序文件夹。

      默认路径: ${HOME}/arcgis/notebookserver/tools/postInstallUtility

    3. 通过指定文件路径安装您的自定义 Docker 映像。

       ./PostInstallUtility.sh -l <path of .tar Custom Docker image>

  10. 在参与 ArcGIS Notebook Server 站点的每台计算机上重复步骤 9。

您的自定义映像现已构建,并且您拥有完整的 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 提供的运行时版本。

    旧版本:

    ArcGIS Notebook Server 10.9 版本开始,此参数已弃用。

    imageId

    (必填)

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

    containerType

    (可选)

    唯一有效值为 docker

    imagePullString

    (可选)

    不适用。

    requiresAdvancedPrivileges

    (必填)

    如果运行时需要高级权限,请将值设置为 true

    值:true | false

    maxCPU

    (必填)

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

    maxMemory

    (必填)

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

    maxMemoryUnit

    (必填)

    maxMemory 参数指定的单位。

    maxSwapMemory

    (可选)

    每个容器达到 maxMemory 限制时可用的交换内存上限值。

    maxSwapMemoryUnit

    (可选)

    maxSwapMemory 参数指定的单位。

    sharedMemory

    (可选)

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

    sharedMemoryUnit

    (可选)

    sharedMemory 参数指定的单位。

    dockerRuntime

    (可选)

    Linux 环境中仅适用于 GPU 运行时。

    了解有关 ArcGIS Notebook Server 和 GPU 的详细信息

    manifestFile

    (可选)

    包含运行时 Python 库列表的 .json 文件(采用 UTF-8 或 ANSI 编码)的完整路径。

    f

    (可选)

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

    值:html | json | pjson

    createManifestFile

    (可选)

    如果设置为 true,则会为注册为笔记本运行时的 Docker 镜像自动创建清单 .json 文件。 为 manifestFile 参数提供文件会覆盖此设置。

    值:true

    注:

    要创建 manifest.json 文件,请在安装了自定义笔记本运行时映像的 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. 打开新的笔记本以测试此更新。 确认您添加到自定义映像的模块或模块版本在笔记本中可用。

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