본문 바로가기
Docker

[Docker] 도커란? 도커의 핵심개념 파헤치기

by 임혁진 2025. 4. 17.

🐳 도커란?

도커는 애플리케이션을 컨테이너라는 단위로 패키징하여 어디서나 실행할 수 있도록 해주는 컨테이너 기반 오픈소스 가상화 플랫폼입니다.

한 마디로, “애플리케이션을 실행하는 통을 만들어주는 도구”라고 생각하면 됩니다.
일반적인 VM과 다르게, 가볍고 빠르며 리소스를 훨씬 적게 사용합니다.

 

🔍 도커를 사용하는 이유

 

전통적 방식 도커 방식
환경 설정이 복잡함 컨테이너 안에 다 들어있음
"내 컴퓨터에선 잘 되는데..." 어디서든 동일한 환경
무거운 VM 가벼운 컨테이너

 

🧱  도커의 핵심 개념

도커를 이해하려면 이미지, 컨테이너, 도커파일 ,도커 허브를 알아야합니다.

🏗 1 이미지(Image)

컨테이너를 생성하기 위한 "설계도" 같은 것

  • 컨테이너를 생성하기 위한 읽기 전용 템플릿.
  • 애플리케이션 실행에 필요한 모든 설정, 의존성, 코드, 시스템 도구 등이 포함
  • .jar, .py, .exe처럼 실행 가능한 프로그램의 ‘패키지’
  • 예: nginx, mysql, openjdk:17 같은 공식 이미지

1.1 이미지 구조

도커 이미지는 레이어(Layer) 구조로 되어 있음.

 각 레이어는 캐시로 재사용됨 → 이미지 빌드 속도 향상.

-> ubuntu 이미지를 생성할 때 Layer A,B,C 가 들어갑니다.그 이 nginx 이미지를 생성할 때, Nginx이미지는 layer A,B,C + nginx이지만 ubuntu 이미지를 베이스로 베이스 이미지인 ubuntu에 nginx만 더해져서 생성하여 ubuntu+nginx 입니다. Web app도 마찬가지로 새로운 Layer A,B,C + Nginx + Web app이 아니라 이미 만들어진 nginx 이미지에 Web App이 추가되어 이미지가 만들어 지는 것 입니다.

🧊 2 컨테이너(Container)

이미지를 기반으로  독립적으로 실행된 인스턴스 (실제 실행 환경)

  • 이미지로부터 컨테이너를 실행(run) 하면 실제 애플리케이션이 동작하게 됩니다.
  • 격리된 공간에서 프로세스가 돌아가는 것!
  • 파일 시스템, 네트워크, PID 등을 독립적으로 갖고 있음.

 이미지와 컨테이너의 차이점:

  • 이미지는 "설계도"고
  • 컨테이너는 "완성된 집"

 ex) 컨테이너 생성 방법

docker run -d -p 8080:80 nginx

   → nginx라는 이미지로부터 컨테이너가 만들어지고 실행됨.

🧳 3 도커파일(Dockerfile)

이미지를 만들기 위한 "레시피"

  • FROM, RUN, COPY 등의 명령어로 이미지 생성 과정을 기술합니다.
  • 도커 이미지를 자동으로 생성할 수 있는 스크립트 파일.
  • 어떤 기반 이미지에서 출발해서, 어떤 명령을 수행할지를 단계적으로 적는 형식.

   ex) Node Docker 파일

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

→ Node.js 환경을 설치하고, 앱 실행까지 한 번에 정의 가능.

🔄 4 도커 허브(Docker Hub)

도커 이미지 저장소 (깃허브처럼 생각하면 쉬워요!)

  • 도커 이미지들을 공유하고 다운로드할 수 있는 중앙 저장소.
  • 이미 만들어진 이미지들을 다운로드하거나, 내가 만든 이미지를 업로드할 수 있습니다.

ex) mysql 가져오기

docker pull mysql

→ Docker Hub에서 공식 mysql 이미지를 가져와서 로컬에 저장함.

 

 

🧠 요약


 

핵심 개념 설명
Docker Image 실행 환경을 정의한 설계도
Docker Container 이미지를 실행한 실제 인스턴스
Dockerfile 이미지를 자동으로 만드는 스크립트
Docker Hub 이미지 저장소

 

도커는 위의 개념들이 유기적으로 연결되면서 빠르고 일관된 개발·배포 환경을 만들어주는 도구

VM보다도 Docker를 먼저 들어본 사람이 있을정도로, Docker가 뭔지 몰라도 Docker는 들어봤을 정도로  실제로 도커의 사용량은 날이 갈수록 높아지고 있습니다. 

쉬운 동일환경 배포, 격리된 프로세스를 통한 이식성, 유연성 Docker들의 이러한 장점은 이제 서버관리 기본으로 자리잡아 간다 생각합니다.