0.Dockerfile
Github에서 다른 사람의 레포지토리를 구경하다 보면 다음과같은 Dockerfile이라는 파일들을 쉽게 접할수있다.
다음은 GPT-2 의 Dcoker 파일이다.
다음은 Dockerfile.gpu다.
GPT-2를 실행하기 위한 환경을 세팅 해준다.
# TensorFlow 1.15.0 GPU 버전, Python 3.7을 기반 이미지로 설정
FROM tensorflow/tensorflow:1.15.0-gpu-py3
# NVIDIA Docker 1.0 관련 설정 (NVIDIA 드라이버가 필요하다고 라벨링)
LABEL com.nvidia.volumes.needed="nvidia_driver"
LABEL com.nvidia.cuda.version="${CUDA_VERSION}"
# NVIDIA 컨테이너 런타임 설정
ENV NVIDIA_VISIBLE_DEVICES=all \ # 모든 GPU 장치를 컨테이너에서 사용 가능하도록 설정
NVIDIA_DRIVER_CAPABILITIES=compute,utility \ # GPU 연산 기능과 기본 유틸리티만 사용
NVIDIA_REQUIRE_CUDA="cuda>=8.0" \ # 최소 CUDA 8.0 이상 요구
LANG=C.UTF-8 # UTF-8 설정 (문자 인코딩 문제 방지)
# 컨테이너 내부에 /gpt-2 디렉토리를 생성하고, 작업 디렉토리로 설정
RUN mkdir /gpt-2
WORKDIR /gpt-2
# 현재 디렉토리(호스트)의 모든 파일을 컨테이너 내부의 /gpt-2 디렉토리에 복사
ADD . /gpt-2
# Python 패키지 설치 (requirements.txt에 정의된 라이브러리 설치)
RUN pip3 install -r requirements.txt
# GPT-2 모델 다운로드 (각 크기의 모델을 개별적으로 다운로드)
RUN python3 download_model.py 124M # 124M 모델 다운로드
RUN python3 download_model.py 355M # 355M 모델 다운로드
RUN python3 download_model.py 774M # 774M 모델 다운로드
RUN python3 download_model.py 1558M # 1558M 모델 다운로드
1.docker build
docker build명령어를 입력해서
Dockerfile.gpu 를 기반으로 새로운 Docker 이미지를 생성한다.
docker build -t 이미지이름 -f Dockerfile이름 디렉토리
docker build -t gpt2-gpu -f Dockerfile.gpu .
2.docker run
Docker 컨테이너를 실행 한다.
docker run --gpus all -it --rm gpt2-gpu
# --gpus all → GPU 사용 가능하도록 설정
# -it → 터미널 인터페이스로 실행
# --rm → 컨테이너 종료 시 자동 삭제
3.docker-compose
여러 개의 Docker 컨테이너를 관리하고 설정하는 툴이다.
docker-compose.yml 파일을 작성하여 컨테이너를 정의하고 실행한다.
다음은 Node.js 애플리케이션과 MySQL 데이터베이스를 포함한 2개의 DockerFile를 가지고있다.
version: '3.8'
services:
# Node.js 애플리케이션 서비스
web:
image: node:14 # Node.js 공식 이미지
container_name: node-web-app
working_dir: /app
volumes:
- .:/app # 로컬 디렉토리를 컨테이너와 연결
ports:
- "3000:3000" # 3000 포트를 외부와 연결
environment:
- DATABASE_URL=mysql://root:password@db:3306/mydb
depends_on:
- db # db 서비스가 먼저 실행되어야 함
# MySQL 데이터베이스 서비스
db:
image: mysql:5.7 # MySQL 공식 이미지
container_name: mysql-db
environment:
MYSQL_ROOT_PASSWORD: password # 루트 비밀번호 설정
MYSQL_DATABASE: mydb # 기본 데이터베이스 설정
volumes:
- mysql-data:/var/lib/mysql # 데이터베이스 데이터를 영구적으로 저장
volumes:
mysql-data: # 데이터베이스 데이터를 저장할 볼륨 정의
docker-compose up을 통해 해당 Docker 파일들을 한번에 빌드,실행할수있고
docker-compose down를 통해 실행 중인 서비스를 중지할수있다.
docker-compose up
docker-compose down
반응형
'Development Tools > Docker' 카테고리의 다른 글
[Docker] 내프로젝트에 Docker 파일 만들기 (0) | 2025.02.06 |
---|---|
[Docker] 컨테이너 내부 CLI 접근 (1) | 2024.10.01 |
[Docker] 호스트포트, 컨테이너포트연결 (0) | 2024.10.01 |