본문 바로가기
카테고리 없음

docker build vs docker run 차이

by by_merry 2026. 4. 26.

Docker를 처음 사용할 때 가장 많이 헷갈리는 명령어가 바로 docker builddocker run이다.

둘 다 자주 같이 나오기 때문에 비슷해 보이지만, 역할은 완전히 다르다.

결론부터 말하면 이거 하나로 끝난다.

  • docker build = 이미지를 만드는 명령어
  • docker run = 컨테이너를 실행하는 명령어

즉, build는 “준비 단계”, run은 “실행 단계”다.

 

docker build는 무엇을 할까

docker build는 Dockerfile을 읽어서 이미지를 만드는 명령어다.

즉, 내가 만든 프로그램을 Docker에서 실행할 수 있는 형태로 변환하는 과정이다.

예를 들어 이런 Dockerfile이 있다고 해보자.

FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "server.js"]

이 상태에서 build를 실행하면:

docker build -t myapp:1.0 .

Docker는 이 파일을 읽고:

  • Node.js 환경 만들고
  • 코드 복사하고
  • npm install 실행하고

최종적으로 하나의 이미지(myapp:1.0)를 만든다.

즉, 아직 실행은 안 된 상태다.

docker run은 무엇을 할까

docker run은 이미 만들어진 이미지를 실행해서 컨테이너를 만드는 명령어다.

즉, 실제로 프로그램이 돌아가기 시작하는 단계다.

docker run -d -p 3000:3000 myapp:1.0

이 명령어를 실행하면:

  • 이미지를 가져와서
  • 컨테이너를 만들고
  • 프로그램을 실행한다

그래서 이 순간부터 서버가 실제로 동작하게 된다.

전체 흐름으로 보면 이렇게 된다

Docker의 전체 흐름은 항상 이 순서를 따른다.

Dockerfile → docker build → Image → docker run → Container

즉:

  • build = 설계도를 실제 제품으로 만드는 단계
  • run = 그 제품을 사용하는 단계

라고 보면 된다.

비유하면 이렇게 이해하면 쉽다

이걸 요리로 비유하면 정말 이해가 쉽다.

  • Dockerfile = 레시피
  • docker build = 요리 준비해서 밀키트 만들기
  • Image = 만들어진 밀키트
  • docker run = 실제로 요리해서 먹기

즉, build는 “만드는 과정”, run은 “먹는 과정”이다.

둘을 같이 써야 하는 이유

docker run만으로는 내가 만든 프로그램을 실행할 수 없다.

왜냐하면 실행할 이미지가 없기 때문이다.

그래서 항상:

  • 먼저 build로 이미지 만들고
  • 그 다음 run으로 실행한다

이 순서를 따른다.

단, nginx처럼 이미 만들어진 이미지를 사용할 경우에는 build를 생략하고 바로 run을 쓸 수 있다.

docker run nginx

이건 Docker Hub에 이미 이미지가 있기 때문이다.

자주 헷갈리는 포인트

많은 사람들이 이렇게 착각한다.

  • build 하면 실행되는 줄 앎
  • run 하면 이미지까지 만들어지는 줄 앎

하지만 실제로는:

  • build = 실행 안 됨 (이미지만 생성)
  • run = 실행만 함 (이미지는 필요)

이다.

그래서 둘은 절대 같은 역할이 아니다.

한눈에 정리

명령어

역할

docker build Dockerfile → Image 생성
docker run Image → Container 실행

한 줄로 정리하면

docker build는 이미지를 만드는 명령어이고, docker run은 그 이미지를 실행해서 컨테이너를 만드는 명령어다. 즉, build는 준비, run은 실행이다.