Dockerfile의 주요 명령어에 대해 설명해주세요.
힌트 · FROM, RUN, CMD, ENTRYPOINT, COPY의 차이를 설명해보세요.
모범답안
Dockerfile은 이미지를 만들기 위한 레시피 같은 파일입니다. 주요 명령어는 다음과 같습니다.
FROM: 베이스 이미지를 지정합니다. 예를 들어
FROM ubuntu:latest는 최신 우분투 이미지를 기반으로 시작하겠다는 의미입니다.RUN: 이미지를 빌드하는 과정에서 명령어를 실행합니다. 예를 들어
RUN apt-get update && apt-get install -y nginx는 패키지를 업데이트하고 nginx를 설치합니다.COPY: 로컬 파일을 이미지 안으로 복사합니다.
COPY ./app /app은 현재 디렉토리의 app 폴더를 이미지 내 /app 폴더로 복사합니다.WORKDIR: 이후 RUN, CMD, ENTRYPOINT 명령어들이 실행될 작업 디렉토리를 설정합니다.
WORKDIR /app을 설정하면 이후 명령어들은 /app 디렉토리에서 실행됩니다.CMD: 컨테이너가 시작될 때 실행할 명령어를 지정합니다. Dockerfile에 여러 개의 CMD가 있다면 마지막 CMD만 실행됩니다.
CMD ["nginx", "-g", "daemon off;"]처럼 실행 파일과 인자를 배열 형태로 지정하는 것이 좋습니다.ENTRYPOINT: CMD와 비슷하지만, 컨테이너 실행 시 항상 실행되는 명령어입니다. CMD는 ENTRYPOINT에 의해 오버라이드될 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 DevOps / CI·CD 면접 질문
- Dockerfile로 이미지를 빌드할 때 레이어 캐시(build cache)는 어떻게 동작하며, 캐시를 잘 활용하려면 명령어 순서를 어떻게 배치하는 것이 좋은가요?
- 컨테이너와 가상머신(VM)의 차이를 격리 방식과 리소스 사용 측면에서 설명해주세요.
- Docker와 가상머신(VM)의 차이점에 대해 설명해주세요.
- Docker Compose의 용도와 사용 방법에 대해 설명해주세요.
- Kubernetes의 주요 개념(Pod, Deployment, Service, Ingress)에 대해 설명해주세요.
- Kubernetes의 ReplicaSet과 Deployment의 차이점은 무엇인가요?