Skip To Content

Notebook 런타임 확장

ArcGIS Notebook Server에는 2개의 Notebook 런타임(Python 모듈 컬렉션)이 포함되어 있습니다. 이러한 런타임은 서버 사이트에서 실행되는 각 컨테이너에 적용된 컨테이너 이미지를 통해 Notebook 사용자에게 제공됩니다.

Standard 및 Advanced Notebook 런타임에는 데이터 과학, 공간 분석, 콘텐츠 관리/운영에 사용할 수 있는 ArcGIS API for Python 및 다양한 Python 모듈이 포함되어 있습니다. 고급 런타임에는 ArcPy도 포함되어 있습니다.

사용 가능한 Python 라이브러리 목록 확인

경우에 따라 Notebook 작성자는 이러한 2개의 런타임에 포함되어 있지 않은 모듈 또는 특정 버전의 모듈을 사용해야 할 수 있습니다. 다음과 같은 방식으로 ArcGIS Notebook Server의 추가 Python 모듈에 접근할 수 있습니다.

  • Notebook 세션 중에 Python 모듈을 설치합니다. 그러면 이 모듈이 해당 Notebook에서 사용할 수 있도록 제공됩니다.
  • 사용자 설정 런타임의 추가 Python 라이브러리가 포함되도록 Esri 컨테이너 이미지를 확장합니다. 생성한 컨테이너 이미지를 통해 확장된 런타임이 사이트의 모든 Notebook 작성자에게 제공됩니다.

세션 중 모듈 설치

Notebook 작성자는 conda 또는 pip 패키지 관리 시스템을 사용하여 두 런타임에 포함되어 있지 않은 Python 모듈 또는 모듈 버전이 Notebook 세션 중에 제공되도록 할 수 있습니다. ArcGIS Notebook Server에서 모듈 관리에 conda가 사용되므로 conda를 사용하는 것을 권장하지만 일부 Python 모듈의 경우 pip로만 제공됩니다.

conda 방법을 사용하면 원하는 모듈이 Notebook 세션 중에 설치됩니다. Notebook이 닫히거나 사용자의 컨테이너가 종료되면 모듈을 더 이상 사용할 수 없습니다. 해당 방법을 사용하여 모듈을 설치하려면 사용자가 conda 또는 pip 채널에 대한 인터넷 연결이 가능해야 합니다.

비고:

condapip는 2개의 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를 구성합니다.

2개의 Notebook 런타임(표준 또는 고급) 중 하나를 시작점으로 사용합니다. 사용자 정의 런타임을 빌드한 후에는 사이트의 새 런타임으로 등록할 수 있습니다.

  1. ArcGIS Notebook Server설치 및 구성합니다.
  2. 관리자로 ArcGIS Notebook Server 관리자 디렉터리에 로그인합니다.

    URL은 https://notebookserver.domain.com:11443/arcgis/admin/ 형식입니다.

  3. Notebook > 런타임을 클릭한 다음 사용자 정의 이미지로 확장할 Notebook 런타임을 선택합니다.

    런타임 리소스 페이지에서 해당 런타임의 imageId 값을 기록해 둡니다. 해당 값은 다음 단계에서 사용됩니다.

  4. 원하는 Python 모듈을 사용자 설정 이미지에 추가하는 Dockerfile을 생성합니다.

    Dockerfile은 Docker 컨테이너 이미지를 생성하는 지침으로 구성된 간단한 TXT 파일입니다. 관련 정보와 모범 사례는 Dockerfile 설명서를 참고하세요.

    다음 예시에서는 데이터 시각화 Python 패키지인 graphviz를 Advanced Notebook 런타임에 추가합니다. Dockerfile의 다음 코드 블록은 Dockerrepository 이름 및 tag을(를) 사용하여 고급 런타임에 접근한 다음 해당 런타임 내에서 graphviz을(를) 설치하도록 합니다. 이 런타임이 설치된 ArcGIS Notebook Server 머신에서 docker images 명령을 사용하여 repository 이름 및 tag을(를) 가져올 수 있습니다. conda clean 명령은 파일 크기를 줄일 수 있는 유용한 방법입니다.

    docker images 명령을 사용하여 기존 Notebook 런타임에 대한 이미지 이름(저장소) 및 태그를 가져옵니다.

    
    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

    데이터 시각화 Python 패키지인 graphviz을(를) Advanced Notebook 런타임에 추가하여 사용자 설정 런타임을 생성합니다.

    # 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

    이 예시에서는 Oracle 클라이언트 라이브러리를 포함하는 사용자 설정 런타임을 생성합니다.

    ## Using a Dockerfile to build a custom notebook runtime that includes Oracle client
    FROM arcgis-notebook-python-advanced:10.8.1.14362
    
    ## 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 arcgis-notebook-python-advanced-custom:10.8.1.14362 -f /data/DockerfileDir/Dockerfile .
    비고:

    명령 끝부분에는 마침표를 포함해야 합니다.

    명령이 실행되면 Docker에서 새 컨테이너 이미지가 생성됩니다. 새 이미지의 요약된 ID 값이 사용된 Successfully built <imageId>이(가) 해당 명령 결과의 마지막 라인이 됩니다. 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.9.1.28156 > 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 관리자를 엽니다.
  2. 설정 페이지를 열고 런타임을 클릭합니다.
  3. 런타임 등록을 클릭하여 등록 대화 상자를 엽니다.
  4. 적절한 값을 지정하여 등록을 완료합니다.

    매개변수세부정보
    name

    (필수)

    "Notebook Custom Runtime Python 3"와(과) 같이 새 런타임을 나타내는 문자열입니다.

    version

    (필수)

    Esri에서 제공하고 기본 Docker 이미지로 사용되는 런타임 버전입니다.

    레거시:

    이 매개변수는 ArcGIS Notebook Server 버전 10.9부터 더 이상 사용되지 않습니다.

    imageId

    (필수)

    생성한 경우 새 Docker 이미지의 전체(잘리지 않은) ID입니다.

    containerType

    (선택)

    유일한 유효값은 docker입니다.

    imagePullString

    (선택)

    N/A

    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로 설정하면 Notebook 런타임으로 등록된 Docker 이미지에 대해 매니페스트 .json 파일이 자동으로 생성됩니다. manifestFile 매개변수에 대한 파일을 제공하면 이 설정이 무시됩니다.

    값: true

    비고:

    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 사이트의 런타임을 기존 설정으로 되돌리려면 관리자 디렉터리의 팩터리 런타임 복원 작업을 사용합니다. 이 기능은 https://notebookserver.domain.com:11443/arcgis/admin/notebooks/runtimes/restore에서 사용할 수 있으며 사이트의 현재 버전에 대한 팩터리 런타임만 복원합니다.