일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- VPC
- 도커
- 후기
- 알고리즘
- ssh
- AWS
- docker
- cloud-config
- 숙련기술원
- 11531
- ecr.dkr
- EC2
- docker #도커 #기본명령어
- 4575
- kubernetes #k8s #구성요소 #작동원리 #핵심요소
- keypair
- Metric
- dataroot
- ecr.api
- 블로그 소개 #공지
- docker #dockerfile #도커 #도커파일
- kubernetes #k8s #기본 #명령어
- imds
- ENI
- 백준
- node exporter
- prometheus
- endpoint
- 합격전략
- googleauthenticator
- Today
- Total
ISFJ 개발자의 이야기
도커파일(Dockerfile) 파해쳐보기 본문
이번엔 도커 파일의 개념과 지시문들을 파해쳐보는 블로그를 작성 해보려 합니다.
첫번째로 도커파일이 무엇인지 알아보고, 다음으로 도커파일 내 지시문에 대해 알아보겠습니다.
도커파일 이란?
Docker 상에서 작동시킬 컨테이너의 구성 정보를 기술한 파일이며,
Docker build 명령을 통해 Dockerfile 에 기술된 구성 정보를 바탕으로 Docker image를 생성합니다.
도커파일의 지시문과 각 지시문의 역할
FROM
이 지시문은 새로 생성할 이미지의 기반이 될 이미지를 정의 합니다. 예를 들어, FROM ubuntu:18.04라는 명령은 Ubuntu 18.04를 기반으로 새 이미지를 만들겠다는 의미입니다.
CMD
이 지시문은 컨테이너가 시작될 때 실행될 명령을 정의 합니다. CMD가 여러 번 사용될 경우 마지막 CMD만 적용 됩니다. 예를 들어, CMD ["echo", "Hello, World!"]는 컨테이너가 시작될 때 "Hello, World!"를 출력 합니다.
RUN
이 지시문은 이미지 빌드 시에 실행될 명령을 정의 합니다. RUN은 주로 패키지를 설치하거나, 디렉토리를 만드는 등의 작업에 사용 됩니다. 예를 들어, RUN apt-get update && apt-get install -y curl은 이미지가 빌드될 때 curl 패키지를 설치 합니다.
ENTRYPOINT
ENTRYPOINT 지시문은 컨테이너가 시작될 때 실행될 명령을 정의 합니다. CMD와 비슷해 보이지만 차이점이 있는데, ENTRYPOINT는 컨테이너를 실행할 때 항상 실행되는 반면, CMD는 ENTRYPOINT에 의해 오버라이드될 수 있습니다. (여기서 오버라이드란? 덮어쓰기이다. 즉 CMD명령어는 덮어 쓰기가 가능하지만 ENTRYPOINT 명령은 컨테이너가 시작될 때 항상 실행 됩니다.)
EXPOSE
이 지시문은 컨테이너가 네트워크 포트를 통해 들어오는 연결을 받아들일 수 있도록 합니다. 예를 들어 EXPOSE 80은 컨테이너가 80번 포트를 통해 들어오는 연결을 받아들일 수 있음을 나타냅니다.
COPY
이 지시문은 호스트 시스템의 파일 또는 디렉토리를 도커 이미지에 복사 합니다. 예를 들어, COPY . /app는 현재 디렉토리의 모든 파일을 이미지의 /app 디렉토리에 복사 합니다.
ADD
ADD 지시문은 COPY와 비슷하지만 추가적인 기능을 가지고 있습니다. URL을 지정하면 원격 파일을 다운로드하고, 압축 파일을 지정하면 자동으로 압축 해제합니다.
WORKDIR
이 지시문은 RUN, CMD, ENTRYPOINT, COPY, ADD 명령어들이 실행되는 작업 디렉토리를 설정 합니다. 예를 들어, WORKDIR /app는 이후의 명령들이 /app 디렉토리에서 실행되도록 합니다. (cd 명령어와 같은 기능)
Node를 사용한 도커파일 예제
# Node.js v18를 기반 이미지로 설정
FROM node:18
# 작업 디렉토리를 /usr/src/app으로 설정
WORKDIR /usr/src/app
# package.json 파일을 컨테이너에 복사
COPY package*.json ./
# 의존성 패키지들을 설치합니다.
RUN npm install
# 애플리케이션의 소스 코드를 컨테이너에 복사
COPY . .
# 애플리케이션이 3000번 포트에서 동작한다고 선언
EXPOSE 3000
# 애플리케이션을 실행하는 CMD를 정의
CMD [ "npm", "run", "start:dev" ]
'Cloud > Docker' 카테고리의 다른 글
Docker Container data root 바꾸기 (0) | 2025.06.14 |
---|---|
Docker 기본 명령어를 알아보자 (0) | 2025.05.01 |