본문 바로가기
프로그램 (PHP,Python)

Jupyter Notebook 한글 Docker 환경 구성 및 테스트

by 날으는물고기 2023. 9. 26.

Jupyter Notebook 한글 Docker 환경 구성 및 테스트

Docker를 사용하여 Jupyter Notebook을 실행하면서 한글 폰트 문제를 해결하는 방법을 확인해 보겠습니다.

  1. Dockerfile 작성이 Dockerfile은 jupyter/datascience-notebook:latest 이미지를 기반으로하여 빌드됩니다. 우분투 패키지 소스를 한국 미러로 변경하고, 나눔 폰트를 설치한 다음, 폰트 캐시를 업데이트합니다.
  2. 먼저, Jupyter Notebook을 실행할 Docker 이미지를 빌드하기 위한 Dockerfile을 작성해야 합니다.
    아래는 Dockerfile의 내용입니다.
    FROM jupyter/datascience-notebook:latest
    
    USER root
    
    # Ubuntu 패키지 소스를 한국 미러로 변경
    RUN sed -i 's/archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list && \
        sed -i 's/security.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
    
    # 나눔 폰트 설치
    RUN apt-get update && apt-get -y upgrade && apt-get install -y fonts-nanum* && \
        fc-cache -fv && rm -fr ~/.cache/matplotlib
    
    USER jovyan
  3. Docker Compose 파일 작성
    • build: Docker 이미지를 빌드할 때 사용할 Dockerfile을 지정합니다.
    • ports: 호스트와 컨테이너 간의 포트 매핑을 설정하여 Jupyter Notebook을 호스트에서 접근할 수 있도록 합니다.
    • volumes: 호스트 디렉토리와 컨테이너 내부 디렉토리를 연결하여 Jupyter Notebook의 노트북 파일을 호스트와 공유합니다.
    • environment: 환경 변수를 설정하여 Jupyter Notebook 구성을 지정합니다. 여기서 GRANT_SUDO를 설정하여 사용자에게 sudo 권한을 부여하고, Jupyter Lab을 활성화하며, 토큰을 지정합니다.
  4. 이제 Docker Compose를 사용하여 컨테이너를 실행하는 방법을 설정합니다. Docker Compose 파일 (예: docker-compose.yml)을 작성합니다.
    아래는 예시 Docker Compose 파일의 내용입니다.
    version: '3'
    
    services:
      jupyter:
        build:
          context: .
          dockerfile: Dockerfile
        ports:
          - "8888:8888"
        volumes:
          - /path/to/your/notebooks:/home/jovyan/work
        environment:
          - GRANT_SUDO=yes
          - JUPYTER_ENABLE_LAB=yes
          - JUPYTER_TOKEN=mysecrettoken
  5. 컨테이너 실행
    • -f: 사용할 Docker Compose 파일을 지정합니다.
    • -d: 백그라운드에서 컨테이너를 실행합니다.
  6. Docker Compose 파일을 사용하여 컨테이너를 실행합니다.
    아래 명령어를 실행하세요. {YOUR-DIR}{YOUR-PASSWORD}를 실제 디렉토리 경로와 비밀 토큰으로 바꿔주세요.
    docker-compose -f /path/to/your/docker-compose.yml up -d

이제 Jupyter Notebook을 사용할 수 있으며, 한글 폰트 문제는 해결되어 있어야 합니다. 필요한 경우 Jupyter Notebook의 환경 설정을 추가로 수정할 수 있습니다.

파이썬, Jupyter, PostgreSQL, 그리고 pgAdmin을 포함한 Docker Compose 환경을 구성하는 방법을 확인해 보겠습니다.

먼저, 주어진 환경에서 기존 Docker Compose 파일을 개선하고 몇 가지 추가 사항을 제안하겠습니다.

  1. Docker Compose 파일 작성
    version: '3'
    
    services:
      python:
        image: python:3.7-alpine
        working_dir: /app
        volumes:
          - ./app:/app
        command: ["python", "app.py"]
    
      db:
        image: postgres
        volumes:
          - ./docker/data:/var/lib/postgresql/data
        environment:
          - POSTGRES_DB=sampledb
          - POSTGRES_USER=sampleuser
          - POSTGRES_PASSWORD=1234
          - POSTGRES_INITDB_ARGS=--encoding=UTF-8
    
      pgadmin:
        image: dpage/pgadmin4
        ports:
          - "80:80"
        environment:
          - PGADMIN_DEFAULT_EMAIL=admin@example.com
          - PGADMIN_DEFAULT_PASSWORD=admin
    
      jupyter:
        build:
          context: .
          dockerfile: Dockerfile-jupyter
        ports:
          - "8888:8888"
        volumes:
          - ./jupyter:/home/jupyter
    • python: 파이썬 애플리케이션을 실행하는 서비스로서 Python 3.7 알파인 이미지를 사용합니다. ./app 디렉토리를 컨테이너 내 /app에 마운트하고 app.py를 실행합니다.
    • db: PostgreSQL 데이터베이스를 실행하는 서비스로서 PostgreSQL 공식 이미지를 사용하며, 데이터 디렉토리를 로컬 시스템과 공유합니다.
    • pgadmin: pgAdmin을 실행하는 서비스로서 pgAdmin 4 이미지를 사용하며, 포트 80을 호스트에 매핑하여 웹 인터페이스에 액세스할 수 있습니다.
    • jupyter: Jupyter Notebook을 실행하는 서비스로서 커스텀 Dockerfile Dockerfile-jupyter를 사용하며, 포트 8888을 호스트에 매핑하여 Jupyter Notebook에 액세스할 수 있습니다.
  2. Docker Compose 파일 (docker-compose.yml)을 업데이트하여 모든 서비스를 포함하고 다음과 같이 정의할 수 있습니다.
  3. Jupyter Notebook Dockerfile 작성
    FROM jupyter/base-notebook:latest
    
    USER root
    
    # 추가 패키지 설치 및 한글 폰트 설치 등 원하는 환경 설정
    RUN apt-get update && apt-get install -y build-essential python3-pip openjdk-8-jre wget && \
        pip install --upgrade pip && \
        pip install jupyterlab && \
        apt-get clean
    
    USER $NB_UID
    
    # Jupyter Notebook 설정 (예: 한글 폰트 추가)
    RUN mkdir -p ~/.jupyter && \
        echo "c.NotebookApp.ip = '0.0.0.0'" >> ~/.jupyter/jupyter_notebook_config.py && \
        echo "c.NotebookApp.token = ''" >> ~/.jupyter/jupyter_notebook_config.py && \
        echo "c.NotebookApp.allow_root = True" >> ~/.jupyter/jupyter_notebook_config.py && \
        echo "c.NotebookApp.notebook_dir = '/home/jupyter'" >> ~/.jupyter/jupyter_notebook_config.py && \
        echo "c.NotebookApp.iopub_data_rate_limit=1.0e10" >> ~/.jupyter/jupyter_notebook_config.py
    
    EXPOSE 8888
    
    WORKDIR /home/jupyter
    CMD ["jupyter", "lab"]
    이 Dockerfile은 jupyter/base-notebook:latest 이미지를 기반으로하여 Jupyter Notebook을 설치하고 환경을 설정합니다. 이 설정에는 한글 폰트 추가와 Jupyter Notebook의 기본 설정이 포함됩니다.
  4. Dockerfile-jupyter 파일을 작성하여 Jupyter Notebook 컨테이너를 정의합니다. 아래는 예시 Dockerfile의 내용입니다:
  5. 컨테이너 실행
    docker-compose up -d
    이제 파이썬 애플리케이션, PostgreSQL 데이터베이스, pgAdmin, 그리고 Jupyter Notebook이 모두 실행됩니다.
  6. 모든 설정이 완료되었으므로, 다음 명령어를 사용하여 Docker Compose를 실행합니다:
  7. Jupyter Notebook 접속
  8. Jupyter Notebook에 액세스하려면 웹 브라우저에서 http://localhost:8888 또는 해당 호스트의 IP 주소 및 포트를 사용하여 접속할 수 있습니다. 초기 암호나 토큰이 설정되어 있다면 이를 입력하십시오.

이러한 설정을 통해 파이썬 애플리케이션, PostgreSQL, pgAdmin, 그리고 Jupyter Notebook을 Docker Compose를 사용하여 실행하고 관리할 수 있습니다. 필요에 따라 추가 설정을 수행하거나 다른 환경 요구 사항을 추가할 수 있습니다.

Docker를 사용하여 Jupyter Notebook을 설치하고 Pandas 라이브러리를 테스트하는 과정을 자세하게 설명하겠습니다.

1. Docker와 Docker Compose 설치

1.1. CentOS 7에서 Docker 설치

먼저, CentOS 7 서버에 Docker와 Docker Compose를 설치해야 합니다.

이미 Docker가 설치되어 있다면 이 단계를 건너뛰세요.

# SELinux 비활성화
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

# 필요한 패키지 설치
yum update -y
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce

1.2. Docker Compose 설치

Docker Compose는 Docker 애플리케이션을 정의하고 실행하는 데 사용됩니다. Docker Compose를 설치합니다.

# Docker Compose 설치
curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

1.3. Docker 서비스 시작

Docker와 Docker Compose를 설치한 후, Docker 서비스를 시작하고 부팅 시 자동으로 시작하도록 설정합니다.

# Docker 서비스 시작 및 자동 시작 설정
systemctl enable docker
systemctl start docker

2. Jupyter Notebook 설치

2.1. Docker Compose 설정

Docker Compose를 사용하여 Jupyter Notebook을 설치하고 실행할 것입니다.

먼저, docker-compose.yml 파일을 작성합니다.

version: "3"
services:
  jupyter:
    image: jupyter/datascience-notebook
    volumes:
      - /docker/jupyter:/home/jovyan/work
    ports:
      - 8888:8888
    container_name: jupyter-container

위와 같이 docker-compose.yml 파일을 작성하고 저장합니다.

2.2. Jupyter Notebook 컨테이너 실행

그런 다음, Docker Compose를 사용하여 Jupyter Notebook 컨테이너를 실행합니다.

docker-compose up -d

-d 옵션을 사용하여 컨테이너를 백그라운드에서 실행합니다.

2.3. Jupyter Notebook 접속 및 토큰 확인

Jupyter Notebook 실행 시 토큰 값을 확인해야 합니다. 터미널에서 다음 명령어를 사용하여 토큰을 확인합니다.

docker logs jupyter-container

로그에서 토큰 값을 찾아 메모해둡니다. 그런 다음, 웹 브라우저에서 http://서버IP:8888/?token=토큰값에 접속하여 Jupyter Notebook에 로그인합니다.

3. Pandas 라이브러리 테스트

Jupyter Notebook을 사용하여 Pandas 라이브러리를 테스트해보겠습니다.

  1. Jupyter Notebook에 접속한 후 "New"를 클릭하고 "Python 3"을 선택하여 새 노트북을 만듭니다.
  2. 다음 코드를 입력하고 실행합니다.
    import pandas as pd
    
    df = pd.DataFrame(
        [[30, 173, 61],
         [27, 181, 79],
         [26, 158, 45]],
        index=[1, 2, 3],
        columns=['Age', 'Height', 'Weight'])
    
    df
  3. 코드를 실행하면 Pandas 데이터프레임이 표시됩니다.

이제 Jupyter Notebook을 사용하여 Pandas 라이브러리를 테스트할 수 있습니다. 필요한 경우 추가적인 Python 패키지를 설치하고 데이터 분석 작업을 수행할 수 있습니다.

 

또한, Docker Compose를 사용하여 Jupyter Notebook을 쉽게 관리하고 실행할 수 있습니다. Docker를 통해 환경을 격리하고 필요한 패키지를 설치하여 Python 개발을 시작할 수 있습니다.

728x90

댓글