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

    매개변수세부정보

    이름

    새 런타임을 나타내는 문자열입니다(예시: "Notebook Custom Runtime Python 3.").

    버전

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

    이미지 ID

    Docker 이미지 생성 시 지정된 해당 이미지의 전체(잘리지 않은) ID입니다.

    컨테이너 유형

    (선택 사항) 유일한 유효값은 "Docker"입니다.

    이미지 가져오기 문자열

    (옵션) 적용할 수 없음

    고급 권한

    (필수) 런타임에 Advanced Notebooks 권한이 필요한 경우 켭니다.

    최대 CPU

    각 컨테이너에 사용할 최대 CPU 장치 수입니다.

    최대 메모리

    각 컨테이너에 사용할 최대 메모리 양입니다.

    최대 메모리 유닛

    최대 메모리 매개변수로 지정하는 단위입니다.

    최대 스왑 메모리

    (옵션) 최대 메모리 제한에 도달할 경우 각 컨테이너에 사용할 수 있는 최대 스왑 메모리 양입니다.

    최대 스왑 메모리 유닛

    (옵션) 최대 스왑 메모리 매개변수로 지정하는 단위입니다.

    공유 메모리

    (옵션) 각 컨테이너에 사용할 수 있는 공유 메모리 양입니다.

    공유 메모리 유닛

    (옵션) 공유 메모리 매개변수로 지정하는 단위입니다.

    Docker 런타임

    (옵션) GPU 런타임에만 적용됩니다. ArcGIS Notebook Server 및 GPU에 대한 자세한 정보

    라이브러리 매니페스트

    런타임에 Python 라이브러리 목록이 포함된 *.json 파일(UTF-8 또는 ANSI 인코딩)입니다.

    비고:

    manifest.json 파일을 만들려면 사용자 설정 Notebook 런타임 이미지가 설치된 ArcGIS Notebook Server 머신에서 PowerShell 창을 열고 다음 명령을 실행합니다.

    $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 >> ~\Desktop\manifest.json; docker kill $ID
  5. 준비가 끝나면 저장을 클릭하여 새로운 런타임을 등록합니다.
  6. 새 Notebook을 열어 해당 업데이트를 테스트합니다. 사용자 정의 이미지에 추가된 모듈 또는 모듈 버전이 Notebook에 제공되는지 확인합니다.

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