컨테이너와 Docker — 가상화의 단위가 애플리케이션으로 내려온다
이 글은 2022년 10월 기준 기록입니다.
오늘날 애플리케이션을 개발하는 일은 코드를 쓰는 것 이상을 요구합니다. Docker는 자사 소개에서 그 사정을 이렇게 설명합니다.
Developing apps today requires so much more than writing code. Multiple languages, frameworks, architectures, and discontinuous interfaces between tools for each lifecycle stage creates enormous complexity. Docker simplifies and accelerates your workflow, while giving developers the freedom to innovate with their choice of tools, application stacks, and deployment environments for each project.
여러 언어와 프레임워크, 아키텍처, 그리고 생애 주기 단계마다 끊기는 도구 사이의 인터페이스가 복잡성을 만듭니다. 컨테이너는 그 복잡성을 다루는 한 가지 방법이고, Docker는 컨테이너를 다루는 한 가지 도구입니다.
컨테이너는 소프트웨어와 의존성을 함께 담은 표준 단위다
컨테이너는 소프트웨어와 그 의존성을 모두 포함하는 표준 단위입니다. 실행에 필요한 것을 하나의 단위 안에 함께 넣어 두기 때문에, 다양한 컴퓨팅 환경에서 빠르고 안정적으로 동작할 수 있습니다.
컨테이너를 만드는 재료는 컨테이너 이미지입니다. 이미지를 실행하면 컨테이너가 생성되어 동작합니다. 그리고 이렇게 만들어진 각각의 컨테이너는 독립적으로 동작합니다.
가상화의 수준이 컴퓨터에서 애플리케이션으로 내려왔다
컨테이너를 한 문장으로 이해하려면 가상화의 단위를 보면 됩니다. 가상화의 수준이 하나의 컴퓨터에서 하나의 애플리케이션(소프트웨어)으로 내려왔다고 생각할 수 있습니다.

두 구조를 나란히 놓으면 차이가 분명해집니다. 가상 머신 쪽은 인프라 위에 하이퍼바이저가 있고, 그 위의 가상 머신마다 게스트 운영 체제를 하나씩 따로 얹은 뒤 그 안에서 애플리케이션이 돕니다. 컨테이너 쪽은 인프라 위에 호스트 운영 체제가 있고, 그 위에 Docker가 올라가며, 컨테이너화된 애플리케이션들이 그 Docker 위에서 나란히 동작합니다. 가상화되는 대상이 컴퓨터 한 대가 아니라 애플리케이션 하나라는 말은 이 구조를 가리킵니다.
Docker는 컨테이너를 구현하는 여러 기술 중 하나다
컨테이너는 개념이고, Docker는 그 개념을 구현한 여러 기술 중 하나입니다. 컨테이너와 Docker를 같은 말로 쓰기 쉽지만 층위가 다릅니다.
Docker는 도커 엔진을 기반으로 컨테이너를 생성하고 실행합니다. 이 엔진 덕분에 리눅스든 윈도우든 인프라 환경과 무관하게 동일하게 동작합니다. 환경이 달라도 결과가 같다는 점이 컨테이너를 쓰는 이유 자체이므로, 엔진은 부가 기능이 아니라 핵심입니다.
결국 세 단계다
정리하면 Docker로 무언가를 굴리는 일은 다음 세 단계로 요약됩니다.
- 컨테이너를 동작시킬 수 있는 환경을 구성합니다(Docker 설치).
- 컨테이너로 동작시킬 소프트웨어와 그 의존성을 모아 이미지를 생성합니다.
- 생성된 이미지를 컨테이너로 구동합니다.
이후의 모든 명령어와 설정 파일은 결국 이 세 단계 중 어딘가에 속합니다.
'IT·테크 > 인프라' 카테고리의 다른 글
| Docker Desktop 설치 — 윈도우에서 WSL2와 Hyper-V가 하는 일 (0) | 2026.07.24 |
|---|---|
| 리눅스 기본기 — 디렉터리 구조와 명령어, 권한 관리 (0) | 2026.07.21 |