컨테이너·워크플로우 자동화/DocKer 기본 및 활용

Docker란? 컨테이너(Container)란? 이미지(Image)란?

Data Jun 2025. 10. 11. 09:41

지난 글에서 Docker의 핵심 장점이 “어디서나 동일하게 실행되는 환경” 이라는 점을 알아보았습니다.
이번에는 Docker의 기본 개념인 Docker, Container(컨테이너), Image(이미지) 가 각각 어떤 역할을 하는지 쉽게 정리해보겠습니다.

 

Docker란?

Docker는 컨테이너(Container)를 사용하여 각자의 프로그램을 분리된 환경에서 실행하고 관리할 수 있도록 도와주는 도구입니다.

 

쉽게 말해, Docker는 프로그램을 격리된 공간에서 안전하게 실행시키는 시스템이에요.

 

처음 Docker를 접하면 “이게 정확히 뭘 하는 도구지?”라는 의문이 생기기 마련입니다.
하지만 직접 사용해보면 금방 이해가 되죠.
복잡한 설치 과정 없이도 명령어 몇 줄로 프로그램을 실행할 수 있게 해주는 마법 같은 경험이 바로 Docker의 시작입니다.

 

컨테이너(Container)란?

Docker에서 컨테이너(Container) 는 가장 중요한 개념입니다.
컨테이너는 말 그대로 독립적인 컴퓨터 환경을 하나 더 만드는 것과 같습니다.

 

윈도우에서 여러 사용자 계정을 나누어 쓰는 걸 떠올려보세요.
각 계정마다 배경화면, 설정, 프로그램이 다르듯이, 컨테이너도 각자 독립된 공간 안에서만 프로그램을 실행합니다.
즉, 컨테이너 하나가 작은 미니 컴퓨터처럼 동작하는 것이죠.

 

이때, 컨테이너들을 포함하고 있는 실제 컴퓨터를 호스트(Host) 컴퓨터라고 부릅니다.
호스트는 여러 개의 컨테이너를 띄워 관리하지만, 각 컨테이너는 서로 완전히 분리된 환경을 가지고 있습니다.

 

컨테이너의 독립성

컨테이너는 독립된 환경이기 때문에, 다음과 같은 특징을 갖습니다.

  • 디스크(저장 공간) :
    각 컨테이너는 서로 다른 저장 공간을 가집니다.
    예를 들어 A 컨테이너 안에서 만든 파일은 B 컨테이너에서 접근할 수 없습니다.
  • 네트워크(IP) :
    각 컨테이너는 고유한 네트워크(IP 주소)를 갖습니다.
    따라서 컨테이너 간 통신도 명시적으로 연결해주어야만 가능합니다.

이처럼 컨테이너는 “서로 간섭 없는 독립된 환경”을 제공하므로, 여러 애플리케이션을 동시에 띄워도 충돌이 일어나지 않습니다.

 

이미지(Image)란?

마지막으로 Docker의 또 하나의 핵심 개념인 이미지(Image) 를 살펴봅시다.

 

닌텐도 스위치를 생각해보세요.
닌텐도 기기(하드웨어)는 그대로인데, 게임 칩을 바꿔 끼우면 전혀 다른 게임을 실행할 수 있습니다.
이때 게임 칩이 하는 역할이 바로 Docker의 이미지(Image) 입니다.

 

이미지는 프로그램을 실행하는 데 필요한 설치 과정, 설정, 버전 정보 등이 모두 포함된 일종의 실행 패키지입니다.
따라서 이미지를 한 번 만들어두면, 어떤 컴퓨터에서든 동일한 환경으로 실행할 수 있습니다.

 

예시로 이해하기

예를 들어, Node.js 기반의 Express 서버를 Docker 이미지로 만들었다고 가정해보겠습니다.
이 이미지를 실행시키면 Docker는 자동으로 컨테이너를 생성하고, 그 안에서 Express 서버가 돌아갑니다.
설치 과정이나 환경 설정을 따로 거칠 필요가 없죠.

docker run -d -p 3000:3000 my-express-app

이 명령어 한 줄이면 서버가 바로 실행됩니다.

 

또 다른 예로, MySQL 이미지를 실행하면 복잡한 설치 과정 없이 바로 MySQL 데이터베이스를 사용할 수 있습니다.
이처럼 이미지는 “프로그램을 실행하는 데 필요한 모든 것” 을 담고 있기 때문에,
Docker의 강력한 이식성(Portability)재현성(Reproducibility) 을 가능하게 합니다.

 

 

정리하면

개념 역할 비유
Docker 컨테이너를 생성하고 관리하는 도구 닌텐도 본체
Container 프로그램이 실행되는 독립된 황경 닌텐도에서 실행 중인 '게임 화면'
Image 프로그램 실행에 필요한 설정 및 구성 정보 묶음 닌텐도 게임 칩

Docker를 이해하는 핵심은 “이미지로부터 독립된 컨테이너를 실행한다”는 개념입니다.
이미지는 실행 템플릿, 컨테이너는 실행 결과물이라고 볼 수 있죠.