Dockerfile이란?
Docker 이미지는 보통 Dockerhub에서 다운로드받아 사용합니다.
하지만 이 이미지들도 누군가 만들어 올린 결과물입니다.
그렇다면, 나만의 Docker 이미지는 어떻게 만들 수 있을까요?
그 답은 바로 Dockerfile 에 있습니다.
Dockerfile이란, Docker 이미지를 만들기 위한 ‘설명서’ 같은 파일입니다.
어떤 이미지를 기반으로, 어떤 프로그램을 설치하고, 어떤 명령을 실행할지를
한 줄씩 작성해두면 Docker가 이를 읽고 그대로 이미지를 만들어줍니다.
예를 들어, 내가 직접 만든 Spring Boot 프로젝트를 Docker 이미지로 배포하고 싶다면
Dockerfile을 활용해 쉽게 나만의 이미지를 만들 수 있습니다.
정리하자면,
Dockerfile = Docker 이미지를 자동으로 만들어주는 파일
FROM : 베이스 이미지 생성
Dockerfile의 첫 번째 명령은 대부분 FROM으로 시작합니다.
FROM은 “이 이미지를 어떤 기본 환경(Base Image) 위에 만들지”를 지정하는 역할을 합니다.
즉, Docker 컨테이너의 기본 운영체제나 런타임 환경을 선택하는 단계라고 보면 됩니다.
예: FROM openjdk:17-jdk → JDK 17이 설치된 리눅스 환경 위에 이미지를 만들겠다는 뜻
쉽게 비유하자면
컴퓨터를 새로 샀을 때, 기본으로 메모장·인터넷·그림판 등이 깔려있는 것처럼
Docker의 베이스 이미지도 컨테이너를 위한 “기본 프로그램 세트”입니다.
누군가는 JDK가 포함된 환경이 필요하고,
또 누군가는 Node.js가 포함된 환경이 필요하겠죠.
필요에 따라 알맞은 베이스 이미지를 선택하면 됩니다.
사용법
# 문법
FROM [이미지명]
FROM [이미지명]:[태그명]
태그명을 생략하면 자동으로 latest 버전을 사용합니다.
실습: FROM으로 베이스 이미지 생성하기
JDK 17이 설치된 Docker 컨테이너를 직접 만들어보기
1. Dockerfile 만들기
# JDK 17
FROM openjdk:17-jdk
2. Dockerfile을 기반으로 이미지 생성하기
# Dockerfile이 존재하는 디렉터리에서 실행
$ docker build -t my-jdk17-server .
✅ -t : 이미지에 이름(tag)을 붙이는 옵션
✅ . : 현재 디렉터리에 Dockerfile이 있다는 의미
3. 만든 이미지를 기반으로 컨테이너 실행하기
$ docker run -d my-jdk17-server
-d 옵션은 컨테이너를 백그라운드(detached mode)로 실행합니다.
4. 컨테이너 목록 확인하기
$ docker ps # 실행 중인 컨테이너 조회
$ docker ps -a # 중지된 컨테이너 포함 전체 조회
Docker의 컨테이너는 내부 명령이 모두 수행되면 자동으로 종료됩니다.
(즉, 실행할 명령이 끝나면 컨테이너도 종료되는 구조입니다.)
ENTRYPOINT: 컨테이너 실행 시 수행할 명령
예시 Dockerfile
FROM openjdk:17-jdk
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"]
ENTRYPOINT는 컨테이너가 실행될 때 자동으로 실행할 명령을 지정합니다.
위 예시는 sleep 500 명령을 실행해 컨테이너가 500초 동안 유지되도록 설정한 것입니다.
컨테이너 내부에 들어가서 확인하기
이제 컨테이너 내부로 들어가 실제로 JDK가 설치되어 있는지 확인해봅시다.
$ docker build -t my-jdk17-server . # 이미지 빌드
$ docker run -d my-jdk17-server # 컨테이너 실행
$ docker ps # 실행 중인 컨테이너 확인
$ docker exec -it [컨테이너ID] bash # 컨테이너 내부 접속
$ java -version # JDK 버전 확인
출력 예시 👇
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
✅ 정상적으로 OpenJDK 17이 설치된 것을 확인할 수 있습니다.
정리하면
| 개념 | 역할 |
| Dockerfile | Docker 이미지를 자동으로 만들어주는 설정 파일 |
| FROM | 어떤 환경(Base Image)에서 시작할지 지정 |
| ENTRYPOINT | 컨테이너 실행 시 수행할 명령 |
| docker build | Dockerfile을 기반으로 이미지 생성 |
| docker run | 이미지를 기반으로 컨테이너 실행 |
| docker exec | 실행 중인 컨테이너 내부에 접속 |
지금까지 우리는
- Dockerfile이 무엇인지
- FROM으로 베이스 이미지를 선택하는 법
- ENTRYPOINT로 컨테이너를 유지시키는 법
- 컨테이너 내부에서 JDK를 확인하는 방법
까지 모두 실습했습니다 💪
'컨테이너·워크플로우 자동화 > DocKer 기본 및 활용' 카테고리의 다른 글
| Dockerfile ENTRYPOINT 이해하기 (0) | 2025.10.12 |
|---|---|
| Dockerfile의 COPY 명령 (0) | 2025.10.12 |
| Docker Volume(도커 볼륨) (0) | 2025.10.11 |
| Docker로 MySQL 실행시키기 (feat. 볼륨 Volume) (0) | 2025.10.11 |
| 실행 중인 컨테이너 내부에 접속하기 (exec -it) (0) | 2025.10.11 |