Skip to main content

KADaP ide 에서 나만의 container 사용하기

· 7 min read
이종근
데이터플랫폼연구센터 연구원

본 문서에서는 KADaP GPUaaS 내 ide 에서 나만의 container 를 업로드하여 사용할 수 있는 방법 소개합니다.

개요

1. KADaP GPUaaS

자동차데이터플랫폼 (KADaP; Korea Automotive Data Platform) 에는 AI 모델 개발 및 학습을 위한 KADaP GPUaaS 를 제공합니다.

기본적으로 jupyter lab 환경과 visual studio code 를 web ide 형태로 제공합니다.

제공되는 환경 외에 docker hub 에 저장되어 있는 container 환경을 로드하여 사용할 수 있는 기능을 제공합니다.

뿐만 아니라, web ide 에서 사용자가 추가 업데이트한 환경을 private image 로 저장해두고 지속적으로 로드하여 사용할 수 있습니다.


본 문서에서는 docker hub 에 저장된 public/private 이미지를 불러와 실행하는 방법과 사용자 정의 환경을 저장하는 방법에 대해 소개합니다.

구체적인 이해를 위해 Visual studio code server 를 docker container 로 직접 구성하고, KADaP GPUaaS 에서 사용할 수 있도록 docker hub 에 업로드 후 로드하여 사용하는 과정에 대해 설명합니다.

KADaP CLOUD 의 docker agent 환경에서 ubuntu 22.04 를 기반으로 진행합니다.

외부 서버에서 진행 시 docker agent 환경이 필요합니다.


info

KADaP GPUaaS 에 대한 자세한 내용은 문서 에서 확인 가능합니다.


Docker image 생성

1. Dockerfile 작성

1-1. Ubuntu 22.04 환경 구성

CLI 환경에서 아래의 명령어를 통해 Dockerfile 을 생성하고 내용을 작성합니다.

vi Dockerfile

국내 미러를 사용하기 위해 kaist 미러를 사용하고, 서울 시간대로 구성합니다.

FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive

# 한국 미러로 변경 (kaist)
RUN sed -i 's|http://archive.ubuntu.com/ubuntu|http://ftp.kaist.ac.kr/ubuntu|g' /etc/apt/sources.list && \
sed -i 's|http://security.ubuntu.com/ubuntu|http://ftp.kaist.ac.kr/ubuntu|g' /etc/apt/sources.list

# apt update + 최소 패키지
RUN apt-get update && \
apt-get install -y \
curl \
ca-certificates \
sudo \
git \
&& rm -rf /var/lib/apt/lists/*

# 서울 시간대 설정
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
echo "Asia/Seoul" > /etc/timezone

ENV TZ=Asia/Seoul

1-2. Visual Studio Code Server 설치

1-1 에서 작성한 Dockerfile 에 Visual Studio Code Server 를 설치하고 자동 실행되도록 아래의 명령어를 추가합니다.

# code-server 설치
RUN curl -fsSL https://code-server.dev/install.sh | sh

# 사용자 추가 (kadap)
RUN useradd -m kadap && echo "kadap ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

USER kadap
WORKDIR /home/kadap

# config
RUN mkdir -p /home/kadap/.config/code-server
RUN echo "bind-addr: 0.0.0.0:8080" > /home/kadap/.config/code-server/config.yaml && \
echo "auth: none" >> /home/kadap/.config/code-server/config.yaml && \
echo "cert: false" >> /home/kadap/.config/code-server/config.yaml

RUN chown -R kadap:kadap /home/kadap/.config

EXPOSE 8080

CMD ["sh", "-lc", "code-server ."]

최종적으로 작성된 Dockerfile 은 아래와 같습니다.

FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive

# 한국 미러로 변경 (kaist)
RUN sed -i 's|http://archive.ubuntu.com/ubuntu|http://ftp.kaist.ac.kr/ubuntu|g' /etc/apt/sources.list && \
sed -i 's|http://security.ubuntu.com/ubuntu|http://ftp.kaist.ac.kr/ubuntu|g' /etc/apt/sources.list

# apt update + 최소 패키지
RUN apt-get update && \
apt-get install -y \
curl \
ca-certificates \
sudo \
git \
&& rm -rf /var/lib/apt/lists/*

# 서울 시간대 설정
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
echo "Asia/Seoul" > /etc/timezone

ENV TZ=Asia/Seoul

# code-server 설치
RUN curl -fsSL https://code-server.dev/install.sh | sh

# 사용자 추가 (kadap)
RUN useradd -m kadap && echo "kadap ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

USER kadap
WORKDIR /home/kadap

# config
RUN mkdir -p /home/kadap/.config/code-server
RUN echo "bind-addr: 0.0.0.0:8080" > /home/kadap/.config/code-server/config.yaml && \
echo "auth: none" >> /home/kadap/.config/code-server/config.yaml && \
echo "cert: false" >> /home/kadap/.config/code-server/config.yaml

RUN chown -R kadap:kadap /home/kadap/.config

EXPOSE 8080

CMD ["sh", "-lc", "code-server ."]

info

Dockerfile 작성하는 방법에 대해서는 본 문서에서는 다루지 않습니다.
자세한 내용은 Docker 공식 문서에서 확인 가능합니다.

2. Docker image 생성 및 업로드

2-1. Docker build

1 에서 작성한 Dockerfile 을 빌드하여 docker image 를 생성합니다.

Dockerfile 이 있는 디렉토리에서 아래 명령어를 실행합니다.

docker build --network=host -t {이미지이름:태그} .

2-2. Docker push

2-1 에서 생성한 docker image 를 docker hub 에 push 합니다.

docker push <이미지이름:태그>


info

push 전 docker login 필요할 수 있습니다.
docker login -u <username> 입력하여 로그인할 수 있습니다.


KADaP GPUaaS 에서 container 로드

KADaP GPUaaS 에는 기본 제공되는 container 외에 사용자가 추가로 사용하고자 하는 container 를 로드하여 사용할 수 있습니다.

워크로드 생성 시 Pubilc Image 또는 Private Image 를 선택하여 docker hub 이미지를 로드할 수 있습니다.

워크로드 생성

info

Private Image 의 경우 docker hub 로그인을 위한 credential 정보를 입력해야 합니다.

Credential 등록

1. 워크로드 설정

2 에서 생성한 docker image 를 불러와 워크로드를 실행할 수 있습니다.

아래와 같이 Pubilc Image 를 선택하고 위에서 docker hub 에 업로드 한 이미지 이름 kadap/code-server:latest 를 입력합니다.

이미지 로드

info

본 예시에서는 이미지 실행 명령어, 환경 변수 및 포트 추가하지 않아도 실행되도록 Dockerfile 을 작성하였습니다.
필요 시 실행 명렁어, 환경 변수 및 포트 추가하여 워크로드를 실행할 수 있습니다.

변수 추가

2. 워크로드 실행

정상적으로 동작하는 이미지 로드 시 워크로드가 실행되고 code-server 에 접속할 수 있습니다.

워크로드 정상 동작 확인 후 연결 버튼을 클릭하여 워크로드에 접속합니다.

워크로드 실행