반응형
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
도커 (Docker) 의 주요 개념 중 도커 파일 (Dockerfile) 은 무엇이고, 어떻게 활용할 수 있는지 간략히 알아보았습니다.
질문 >
도커 (Docker) 의 주요 개념 중 도커 파일 (Dockerfile) 은 무엇이고, 어떻게 활용할 수 있나요?
답변 >
도커 파일 (Dockerfile)이란?
도커 파일(Dockerfile)은 도커 이미지를 생성하기 위한 스크립트 파일입니다. 도커 파일에는 이미지 생성 과정에서 필요한 명령어와 설정을 단계별로 정의할 수 있습니다. 도커 파일을 기반으로 이미지를 생성하면, 동일한 이미지를 재현 가능하고 일관된 환경을 제공합니다.
도커 파일의 특징
- 불변성
- 이미지를 재생성할 때 동일한 결과를 보장합니다.
- 자동화
- 수동 설정을 줄이고, 반복 가능하며 자동화된 이미지 생성이 가능합니다.
- 계층화
- 각 명령은 이미지의 새로운 레이어를 형성하며, 효율적인 캐싱을 지원합니다.
도커 파일 기본 구조
도커 파일은 단계별로 작성되며, 주요 명령어를 활용합니다. 아래는 도커 파일에서 자주 사용되는 명령어와 예시입니다.
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
도커 파일 명령어
- FROM
- 이미지를 기반으로 새 이미지를 생성.
- 예: FROM ubuntu:20.04
- WORKDIR
- 컨테이너 내 작업 디렉토리 설정.
- 예: WORKDIR /app
- COPY / ADD
- 로컬 파일을 이미지 내로 복사.
- 예: COPY app/ /app/
- RUN
- 이미지 빌드 과정에서 실행할 명령어.
- 예: RUN apt-get update && apt-get install -y python3
- CMD
- 컨테이너가 실행될 때 실행할 기본 명령.
- 예: CMD ["python", "app.py"]
- EXPOSE
- 컨테이너가 사용할 네트워크 포트 설정.
- 예: EXPOSE 8080
- ENV
- 환경 변수를 설정.
- 예: ENV APP_ENV=production
- 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
반응형