Docker 딥러닝 이미지 만들기

Apic·2025년 4월 26일
0

기타

목록 보기
2/3

설치 파일 코드

# file: gpu.Dockerfile

# 기본 베이스
FROM nvidia/cuda:12.4.0-runtime-ubuntu22.04

# Remove any third-party apt sources to avoid issues with expiring keys.
RUN rm -f /etc/apt/sources.list.d/*.list

# 기본으로 설치할 프로그램들
RUN apt-get update && apt-get install -y \
    wget \
    vim \
    curl \
    ssh \
    tree \
    sudo \
    git \
    libglvnd-dev \
    libglib2.0-0 \
    python3 \
    python3-pip \
    python3-dev \
    zip && \
    apt-get clean

# 국가 및 시간 설정
ENV TZ=Asia/Seoul
RUN sudo ln -snf /usr/share/zoneinfo/$TZ /etc/localtime

# uv 설치
RUN curl -LsSf https://astral.sh/uv/install.sh | sh

# Jupyter 설정
RUN python3 -m pip install --upgrade pip && \
    pip install jupyter && \
    pip install jupyterlab

RUN jupyter notebook --generate-config
RUN echo "c.NotebookApp.password = u'sha1:d3f777970acb:af10c014e1ae3894f9662b42ea5cc6206d82d09e'" >> /root/.jupyter/jupyter_notebook_config.py
RUN echo "c.NotebookApp.ip = '0.0.0.0'" >> /root/.jupyter/jupyter_notebook_config.py
RUN echo "c.NotebookApp.allow_root = True" >> /root/.jupyter/jupyter_notebook_config.py
RUN echo "c.NotebookApp.open_browser = False" >> /root/.jupyter/jupyter_notebook_config.py
RUN echo "c.NotebookApp.password_required = True" >> /root/.jupyter/jupyter_notebook_config.py
RUN echo "c.NotebookApp.use_redirect_file = False" >> /root/.jupyter/jupyter_notebook_config.py

현재는 uv만 설치한 상태다.
uv add {패키지명} 또는 uv pip install {패키지 명}를 통해 패키지를 설치할 수 있다.
자세한 설명은 uv 홈페이지에 있다.

그리고 jupyter 비밀번호에는 sha1 알고리즘을 사용한 비밀번호를 적어주어야 한다.
듣기로는 argon2 알고리즘으로 생성한 비밀번호는 오류가 난다고 한다.

sha1 알고리즘 비밀번호 만들기
from jupyter_server.auth import passwd
passwd('1234', 'sha1')

이미지 만들기

sudo docker build -f {만든 도커파일 이름} -t {이미지 명}:{버전} .

ex)
sudo docker build -f gpu.Dockerfile -t temp_docker:1 .

만약 빌드하다가

docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]

Run 'docker run --help' for more information

이런 오류가 발생했다면 docker container toolkit을 설치해야 한다.

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    
sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update

sudo apt-get install -y nvidia-container-toolkit

컨테이너 만들기

sudo docker run -d -it --name {컨테이너 명} --gpus all --ipc=host -v {작업 폴더 위치}:/workspace -p 8888:8888 {이미지 명}:{버전} jupyter lab --allow-root

ex)
sudo docker run -d -it --name temp_dl --gpus all --ipc=host -v .:/workspace -p 8888:8888 temp_docker:12 jupyter lab --allow-root

사용

이제 웹페이지 주소에 127.0.0.1:8888을 치면 jupyter에 접속할 수 있다.

vscode 연결

하지만 나는 vscode에 너무 익숙해져 있어 vscode에서 사용해 보려고 한다.

vscode extension에서 Remote Development를 설치한다.

잘 될수도 있지만 나처럼 오류가 날 수도 있다.
만약 권한 관련해서 오류가 났다면

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

이 명령어를 사용하고 vscode를 껏다가 다시 켜주면

아래 사진처럼 잘 되는 것을 볼 수 있다.

이후 원격 탐색기(왼쪽 패널에서 모니터 모양)을 선택하고 오른쪽 위 선택박스에서 개발 컨테이너를 선택한다.

이후 이 버튼으로 새창으로 열어서 사용할 수 있다.

그리고 workspace의 위치는 위에서 실행할때 적었던 대로 /workspace에 있다
/home/worckspace가 아니니 참고하자

기타

uv에 pytorch를 설치했다.

uv pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu124

업로드한 도커 주소: https://hub.docker.com/r/chaosapic/cuda124ubuntu2204
다운로드: docker pull chaosapic/cuda124ubuntu2204

참조

https://hub.docker.com/r/teddylee777/deepko
https://hub.docker.com/layers/nvidia/cuda/12.4.0-runtime-ubuntu22.04/images/sha256-2d205a50fefc321aca51a1d3aa46fb9a633dd2509a10e28c8bd34a6cb2027619
https://geunuk.tistory.com/405
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
chatgpt

profile
코딩 공부하는 사람

0개의 댓글