복습
Docker란?
컨테이너 기반 가상화 기술을 제공하는 플랫폼
애플리케이션의 실행 환경을 격리된 컨테이너에 패키징할 수 있음
Docker 이미지?
컨테이너를 생성하는데 사용되는 템플릿
애플리케이션과 그 종속성들을 포함
Dockerfile?
- Docker Image를 생성하기 위한 설정 파일
- 주로 명령어들의 순차적인 리스트로 이루어짐
- Dockerfile로 컨테이너에 필요한 이미지, 런타임, 라이브러리, 소스 코드 설정 가능
- Dockerfile을 해석하여 이미지가 어떻게 구성되어 있는지 파악 가능
Dockerfile 특징
텍스트 기반 스크립트 | 이해하고 관리하기 쉬움 |
이미지 기반 빌드 지원 | 컨테이너 크기 최소화 가능 |
이미지 재사용 지원 | 동일 애플리케이션을 여러 환경에서 배포하기 용이 |
Dockerfile 장단점
장점 | 단점 |
애플리케이션의 배포 및 관리 단순화 | Dockerfile을 작성하고 관리하는데에 시간이 소요 |
애플리케이션의 일관성 보장 | |
애플리케이션의 보안 강화 | Dockerfile이 복잡해질 수 있음 |
이미지 생성 과정 기록 | |
컨테이너 (이미지)가 특정 행동을 수행하도록 함 |
Dockerfile 명령어

FROM | 컨테이너의 기본 이미지 지정 항상 Dockerfile의 맨 첫 줄에 위치해야 함 |
RUN | 컨테이너를 실행하기 전 실행할 명령어 지정 |
CMD | 컨테이너가 시작될 때 실행할 명령어 지정 |
EXPOSE | 컨테이너의 외부 포트 지정 |
LABEL | 이미지의 메타데이터를 설정 |
WORKDIR | 컨테이너의 작업 디렉토리 지정 |
COPY | 컨테이너에 파일 복사 |
ADD | 컨테이너에 파일 추가 |
ENTRYPOINT | 컨테이너 실행 시 고정적으로 실행되는 스크립트 혹은 명령어 |
ENV | 컨테이너의 환경 변수 설정 |
VOLUME | 컨테이너의 사용자 지정 |
USER | 컨테이너의 볼륨 지정 |
Dockerfile 실행
docker build -t <이미지 이름> . Dockerfile 실행,
docker images build 명령어로 이미지가 잘 생성되었는지 확인할 수 있다.
Dockerfile 예제

위에 간단한 Dockerfile 코드가 있다.
각 줄을 살펴보자면 아래와 같다.
FROM ubuntu:latest | 베이즈 이미지로서 Ubuntu 최신 버전 사용을 선언 Docker 이미지를 빌드할 때 이 이미지를 기반으로 함 |
RUN apt-get update && apt-get install -y nginx | 이미지를 빌드할 때 실행되는 명령어 패키지 리스트를 최신 상태로 업데이트 Nginx 웹 서버 설치 (-y : 설치 도중 나타나는 확인 프롬프트에 자동으로 Yes 응답) |
CMD ["nginx", "-g", "daemon off;"] | 컨테이너가 시작될 때 실행되는 기본 명령어 Nginx를 백그라운드에서 동작하지 않도록 하기 위해 명령어 실행 Nginx를 daemon이 아닌 포그라운드에서 실행하도록 설정 ➡️ Docker 컨테이너가 실행되는 동안 Nginx 프로세스가 계속 활성화 된 상태 유지 |
➡️포그라운드 (Foreground)
- 컴퓨터 운영체제에서 프로제스가 사용자와 상호작용하며 실행되는 모드
- 프로세스가 사용자의 입력을 받고 출력을 생성
- 사용자와 직접 상호작용
➡️Daemon 모드
- Nginx의 경우, 기본적으로 데몬 (Daemon) 모드로 실행되어 백그라운드에서 동작
- 프로세스가 백그라운드로 이동하고, 사용자와의 직접적인 상호작용이 없게 됨
위 Dockerfile을 사용해 이미지로 빌드하려면 아래와 같은 명령어를 실행하면 된다.

해당 명령어는 현재 디렉토리의 Dockerfile을 사용해 nginx 이미지를 빌드한다.
728x90
'Docker' 카테고리의 다른 글
[Docker] Docker 배포_Spring Boot 프로젝트 (코딩온) (0) | 2024.01.02 |
---|---|
[Docker] Docker 배포_React 프로젝트 (코딩온) (1) | 2023.12.30 |
[Docker] Docker 설치 및 컨테이너 실행 (코딩온) (0) | 2023.12.26 |
[Docker] Docker Desktop - Unexpected WSL error 및 해결 (코딩온) (0) | 2023.12.24 |
[Docker] Docker란? (코딩온) (1) | 2023.12.23 |