본문 바로가기
컴퓨터

👨‍💻 [Docker] 도커 (Docker) 의 주요 개념 중 도커 파일 (Dockerfile) 은 무엇이고, 어떻게 활용할 수 있나요?

by 밝음의기둥 2024. 11. 29.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

도커 (Docker) 의 주요 개념 중 도커 파일 (Dockerfile) 은 무엇이고, 어떻게 활용할 수 있는지 간략히 알아보았습니다.


질문 >

도커 (Docker) 의 주요 개념 중 도커 파일 (Dockerfile) 은 무엇이고, 어떻게 활용할 수 있나요?

답변 >

도커 파일 (Dockerfile)이란?

도커 파일(Dockerfile)은 도커 이미지를 생성하기 위한 스크립트 파일입니다. 도커 파일에는 이미지 생성 과정에서 필요한 명령어와 설정을 단계별로 정의할 수 있습니다. 도커 파일을 기반으로 이미지를 생성하면, 동일한 이미지를 재현 가능하고 일관된 환경을 제공합니다.


도커 파일의 특징

  1. 불변성
    • 이미지를 재생성할 때 동일한 결과를 보장합니다.
  2. 자동화
    • 수동 설정을 줄이고, 반복 가능하며 자동화된 이미지 생성이 가능합니다.
  3. 계층화
    • 각 명령은 이미지의 새로운 레이어를 형성하며, 효율적인 캐싱을 지원합니다.

도커 파일 기본 구조

도커 파일은 단계별로 작성되며, 주요 명령어를 활용합니다. 아래는 도커 파일에서 자주 사용되는 명령어와 예시입니다.

1. 기본 구조

# 베이스 이미지 선택
FROM base_image:tag

# 유지관리자 정보 (선택적)
MAINTAINER your_email@example.com

# 작업 디렉토리 설정
WORKDIR /path/to/workdir

# 파일 복사
COPY source destination

# 패키지 설치 및 설정 실행
RUN command_to_execute

# 컨테이너 시작 시 실행될 명령
CMD ["executable", "param1", "param2"]

# 포트 열기
EXPOSE port_number

# 환경 변수 설정
ENV key=value


도커 파일 명령어

  1. FROM
    • 이미지를 기반으로 새 이미지를 생성.
    • 예: FROM ubuntu:20.04
  2. WORKDIR
    • 컨테이너 내 작업 디렉토리 설정.
    • 예: WORKDIR /app
  3. COPY / ADD
    • 로컬 파일을 이미지 내로 복사.
    • 예: COPY app/ /app/
  4. RUN
    • 이미지 빌드 과정에서 실행할 명령어.
    • 예: RUN apt-get update && apt-get install -y python3
  5. CMD
    • 컨테이너가 실행될 때 실행할 기본 명령.
    • 예: CMD ["python", "app.py"]
  6. EXPOSE
    • 컨테이너가 사용할 네트워크 포트 설정.
    • 예: EXPOSE 8080
  7. ENV
    • 환경 변수를 설정.
    • 예: ENV APP_ENV=production
  8. ENTRYPOINT
    • CMD와 비슷하지만, 명령어를 고정적으로 실행.
    • 예: ENTRYPOINT ["python", "app.py"]

도커 파일 작성 예시

1. 간단한 Python 웹 애플리케이션

# 베이스 이미지 설정
FROM python:3.9-slim

# 작업 디렉토리 설정
WORKDIR /app

# 로컬 파일 복사
COPY . /app

# 필요한 패키지 설치
RUN pip install -r requirements.txt

# 포트 열기
EXPOSE 5000

# 컨테이너 실행 시 명령
CMD ["python", "app.py"]


2. Nginx 기반 웹 서버 설정

# 베이스 이미지 설정
FROM nginx:alpine

# HTML 파일 복사
COPY index.html /usr/share/nginx/html/

# 포트 열기
EXPOSE 80


3. Java 애플리케이션 빌드 및 실행

# 빌드 단계
FROM maven:3.8.7-openjdk-17 AS build
WORKDIR /app
COPY . /app
RUN mvn clean package

# 실행 단계
FROM openjdk:17-jdk
WORKDIR /app
COPY --from=build /app/target/myapp.jar /app/myapp.jar
EXPOSE 8080
CMD ["java", "-jar", "myapp.jar"]


도커 파일 활용 방법

  • 이미지 빌드
  • 도커 파일을 사용하여 이미지를 생성합니다.
docker build -t 이미지이름 .

  • 컨테이너 실행
  • 빌드된 이미지를 기반으로 컨테이너를 실행합니다.
docker run -p 5000:5000 이미지이름

  • CI/CD 통합
  • 도커 파일을 CI/CD 파이프라인에서 사용하여 애플리케이션 빌드와 배포를 자동화합니다.

도커 파일 작성 시 주의사항

  • 최소한의 레이어 유지
    • 불필요한 명령어를 줄이고, 단일 RUN 명령에 여러 작업을 결합.
RUN apt-get update && apt-get install -y python3

  • 작은 이미지 사용
    • alpine 등 경량 이미지를 기반으로 사용하여 크기를 줄임.
  • 캐싱 활용
    • 변경 사항이 적은 명령어를 상단에 배치하여 빌드 시간을 단축.
  • 빌드 아티팩트 제거
    • 빌드 과정에서 생성된 임시 파일은 삭제하여 이미지를 최적화.
RUN apt-get update && apt-get install -y build-essential && rm -rf /var/lib/apt/lists/*


도커 파일의 주요 장점

  • 자동화된 이미지 생성: 도커 파일을 사용하면 이미지 빌드가 간단하고 일관되게 이루어집니다.
  • 재현 가능성: 동일한 도커 파일로 언제든지 동일한 이미지를 생성할 수 있습니다.
  • 유연한 설정: 필요한 환경 설정과 애플리케이션 빌드를 쉽게 정의할 수 있습니다.

도커 파일을 효과적으로 활용하면 개발, 테스트, 배포 과정에서 시간과 노력을 크게 절약할 수 있습니다. 😊


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형