Docker Container 생성

징니징징·2025년 4월 8일

LINUX / Ubuntu

목록 보기
4/5

하나의 서버에서 다른 의존성을 가진 프로젝트를 생성하고 진행하기 위해, 혹은 cuda 버전이 다른 프로젝트를 효율적으로 진행하기 위해 Docker의 Container를 사용할 수 있음

Docker Container를 생성하기 위해 사용했던 코드 모음

  1. 사용하고 싶은 gpu와 컨테이너에 할당된 gpu가 일치 하는지, 제대로 할당되었는지 확인해볼 수 있는 코드

    nvidia-smi --query-gpu=index,name,uuid --format=csv

    • A100 GPU 8장을 팀원과 나눠쓰기 위해 지정 GPU를 내 컨테이너에 할당해야 했음
    • 제대로 할당했는지 확인하기 위해 사용한 코드
  2. 내 서버 아이디로 로그인 하는 코드

    sudo -i -u [서버아이디]

  1. docker image를 통한 컨테이너 생성

    docker run -it --gpus '"할당할 GPU 번호"' --name [컨테이너명] -v /home/je:/[마운트할경로] [도커 이미지 레포지토리:태그] /bin/bash

    • 모든 GPU를 할당하고자 할 시 / --gpus all
  2. 컨테이터 실행 시키는 코드

    docker start -ai [컨테이너명]

  1. 현재 모든 컨테이너의 상태 확인 가능

    docker ps -a

  1. 컨테이너에서 종료하지 않고 빠져나오기만 함

    Ctrl + P, Ctrl + Q

  1. 위 처럼 빠져나오기만 했을 때 다시 접근하는 방법

    docker attach [컨테이너명]

docker 컨테이너 생성 후 환경 설정

  • 컨테이너는 최소 환경으로 생성 되기 때문에 pip 부터 python까지 처음부터 설치
    apt update && apt install -y python3 python3-pip
  • pip upgrade : pip install --upgrade pip
  • requirements 패키지 파일 설치 : pip install -r requirements.txt
      bash
      python3
      
      import torch
      print(torch.__version__, torch.cuda.is_available())
      -> torch 확인
      
      import transformers
      print(transformers.__version__)
      -> transformer 확인
      
      import deepspeed
      print(deepspeed.__version__)
      -> deepspeed 확인
      
      pip list
      -> pip list 전체 확인
      
      pip check
      -> pip 리스트 중 문제가 있는 라이브러리 확인
      
      python3 -c "import torch; print(torch.__version__, torch.cuda.is_available(), torch.cuda.get_device_name(0))"
      -> cuda가 잘 붙었는지 확인
      
    • 라이브러리 및 패키지 정상적으로 설치 되었는지 확인

Docker Hub로 Image push / pull

  • mv /home/je/MobileVLM/checkpoints/* /data/MobileVLM-V2/
    • 컨테이너에 마운트된 루트끼리 파일 이동
  • docker 로 이미지 push 하기
    • bash 상에서 docker 로그인
      • docker login
    • 도커 허브 계정 기반으로 이미지 태깅
      • docker tag [이미지이름:태그] [도커허브ID/레포지토리:태그]
    • 도커 허브에 push
      • docker tag [이미지이름:태그] [도커허브ID/레포지토리:태그]
    • 도커 허브에서 image pull
      • docker pull [도커허브ID/레포지토리:태그]
    • pull 한 이미지로 실행 및 컨테이너 생성
      • docker run -it --gpus all [도커허브ID/레포지토리:태그] /bin/bash
      • 상황에 따라 수정 필요
profile
공부로그

0개의 댓글