Docker는 기본적으로 리눅스 커널을 기반으로 동작
- 리눅스(Linux) 운영체제(OS)
- Ubuntu → 가장 인기 많고 쉬운 리눅스 배포판
- Debian → 우분투의 기반이 되는 OS
- CentOS → 기업에서 많이 쓰던 안정적인 배포판(현재는 Rocky Linux, AlmaLinux로 대체)
- Alpine → Docker에서 자주 쓰이는 초경량 배포판
앱 실행에 필요한 모든 것을 담고 있는 Docker Image를 만들 수 있음

| 명령어 | 설명 | 예시 |
|---|---|---|
| FROM | 베이스 Image를 지정 | FROM ubuntu:22.04 |
| MAINTAINER | Dockerfile 작성자 정보를 입력 | MAINTAINER naebaecaem <nbcamp@spartacoding.co> |
| LABEL | Image에 메타데이터 추가 | LABEL purpose='nginx test' |
| RUN | Image 생성 시 실행할 명령어 입력 | RUN apt update && apt upgrade -y && apt autoremove && apt autoclean |
| CMD | Container 생성 시 실행할 명령어 | CMD ["nginx", "-g", "daemon off;"] |
| ENTRYPOINT | Container 시작 시 실행할 명령어 | ENTRYPOINT ["npm", "start"] |
| ENV | 환경 변수 설정 | ENV STAGE staging |
| WORKDIR | 작업 디렉토리 지정 | WORKDIR /app |
| COPY | 파일을 Image에 복사 | COPY index.html /usr/share/nginx/html |
| USER | Container 기본 사용자를 설정 | docker RUN ["useradd", "user"] USER user |
| EXPOSE | Container에서 노출할 포트를 지정 | EXPOSE 80 |
docker buildx build -t my-nginx:latest .
docker build -t my-nginx:latest . # 위 명령이 실행되지 않는 경우 실행
docker run -d -p 80:80 my-nginx:latest
docker stop my-nginx
여러 Container를 쉽게 관리, 자동으로 설정, 확장하며 보안을 강화할 수 있음
docker compose up 한번에 실행docker compose up -d./run_testsdocker compose down🤔 Dockerfile? Docker Image? Docker Container? Docker Compose?
Dockerfile: 레시피, 어떤 OS(Ubuntu)? 어떤 프로그램(Nginx)? 등을 설치할지
- 뜨거운 물을 붓는다, 3분 기다린다 ...FROM ubuntu:latest # 우분투 기반 RUN apt-get update && apt-get install -y nginx # Nginx 설치 CMD ["nginx", "-g", "daemon off;"] # Nginx 실행
Docker Image: 포장된 컵라면, Dockerfile을 실행해 만든 완성된(실행 가능한) 패키지
- 공장에서 레시피(Dockerfile)을 보고 컵라면(Docker Image) 만듦
- 바로 사용할 준비 완, 물만 부으면 컵라면 만들 수 있음docker build -t my-nginx .
Docker Container: 물 부어 완성된 라면, 이미지에서 실제 실행된 인스턴스(프로그램이 실행되는 환경)
- 포장된 컵라면(Image)만 있으면 못 먹음 → 물을 부어 먹어야 함docker run -d -p 8080:80 my-nginx
Docker Compose: 라면+김밥 세트 자동 조리, 여러 컨테이너 한번에 실행/관리
JDK 이미지 사용, Jar 파일 복사, Jar 실행 등..docker build -t 이미지이름 .docker run -d --name 컨테이너이름 -p 8080:8080 이미지이름Dockerfile만 있으면 동일한 환경에서 개발 가능
Docker Compose 파일이 있다면
1. Dockerfile + docker-compose (이미지 빌드 미리x)
2. docker-compose (이미지 빌드 미리 o)
둘 중 한가지만 있어도 동일한 환경에서 개발 가능