Kubernetes 여정 파트 1: 왜 Docker인가?

발행: (2025년 12월 22일 오후 09:57 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

Kubernetes 학습 시리즈의 첫 번째 포스트에 오신 것을 환영합니다! 복잡한 내용에 들어가기 전에, 모든 것을 가능하게 만든 기본 블록인 Docker에 대해 이야기해야 합니다.

소프트웨어 개발을 해본 적이 있다면 “하지만 내 머신에서는 동작해요!” 라는 말을 들어봤을 것입니다.

왜 Docker인가?

새로운 기능을 막 마무리하고 코드가 버전 관리 시스템(VCS)에 병합되었다고 가정해 보세요. 빌드 파이프라인이 아티팩트를 생성하고 이를 서버에 배포합니다.

  • Dev Server: 완벽히 동작합니다. ✅
  • Test Server: 기대대로 동작합니다. ✅
  • Production: 배포했는데 빌드가 실패합니다. ❌

무슨 일이 일어났나요?

가장 흔한 원인은 환경 설정 오류 혹은 개발·테스트 환경에는 있었지만 프로덕션에는 없는 의존성 누락입니다. 전통적으로는 전체 환경이 아니라 아티팩트만을 배포할 수 있었습니다. 여기서 컨테이너가 등장합니다.

Docker가 해결한 방법

Docker는 코드 실행에 필요한 모든 것—라이브러리, 의존성, 설정, 심지어 기본 OS 바이너리까지—를 하나의 단위로 패키징합니다. 이 덕분에 환경 관련 오류가 거의 발생하지 않게 됩니다.

컨테이너란?

컨테이너는 애플리케이션 코드, 라이브러리, 런타임 의존성을 포함한 격리된 경량 샌드박스 환경이며, 호스트 운영 체제와 무관합니다.

  • 핵심 차이점: 가상 머신(VM)과 달리 컨테이너는 전체 운영 체제를 패키징하지 않습니다. 최소한의 바이너리만 포함하고 호스트 OS 커널을 사용하므로 빠르고, 이식성이 뛰어나며, 자원 효율적입니다.

정의: Docker는 이러한 컨테이너를 어디서든 빌드하고, 배포하고, 실행할 수 있게 해 주는 플랫폼입니다.

작동 방식: Dockerfile → 런타임

애플리케이션을 컨테이너화하려면 Dockerfile, 이미지, 컨테이너라는 세 가지 주요 요소를 다룹니다.

Dockerfile

Dockerfile은 명령어 목록이 적힌 평문 파일입니다. docker build를 실행하면 이 명령어들을 읽어 이미지가 생성됩니다.

이미지

Docker 이미지란 애플리케이션의 스냅샷으로, 실행에 필요한 모든 것이 포함됩니다. 이미지는 레지스트리(버전 관리 시스템과 유사) 에 저장되어 모든 환경이 docker pull로 동일한 이미지를 가져올 수 있습니다.

컨테이너

docker run을 실행하면 이미지가 실제 실행 인스턴스로 변환되어 컨테이너가 생성됩니다.

Docker 아키텍처

Docker 아키텍처는 세 가지 주요 구성 요소로 이루어집니다.

  1. 클라이언트 – 코드를 작성하는 곳(예: 노트북).
  2. Docker 데몬(dockerd) – API 요청을 듣고, 이미지 관리 및 컨테이너 실행을 담당하는 “두뇌”.
  3. 레지스트리 – 이미지의 원격 저장소.

Docker 명령의 라이프사이클

# Dockerfile로부터 이미지 빌드 (클라이언트 → 데몬)
docker build -t myapp:latest .

# 로컬 이미지를 원격 레지스트리에 푸시
docker push myrepo/myapp:latest

# 대상 환경에서 이미지 풀
docker pull myrepo/myapp:latest

# 풀한 이미지로 컨테이너 실행
docker run -d -p 80:80 myrepo/myapp:latest

요약

Docker를 사용하면 개발 환경과 프로덕션 환경이 동일해집니다. 내 머신에서 동작한다면 서버에서도 동작합니다. 왜냐하면 코드와 함께 “내 머신”(컨테이너)을 배포하기 때문입니다.

이제 컨테이너가 왜 필요한지 이해했으니, 다음 단계는 여러 컨테이너를 한 번에 관리하는 방법을 배우는 것입니다. 바로 여기서 Kubernetes가 등장합니다.

파트 2를 기대해 주세요!

Back to Blog

관련 글

더 보기 »

Amazon EKS와 함께한 나의 여정: AWS에서 Kubernetes 간소화

Amazon EKS란 무엇인가? Amazon EKS(Elastic Kubernetes Service)는 AWS가 제공하는 관리형 Kubernetes 서비스이다. 이는 복잡한 인프라 관리 작업을 자동화하고, 클러스터의 프로비저닝, 업그레이드, 패치 적용 등을 손쉽게 처리한다. 또한, AWS의 보안, 네트워킹 및 모니터링 서비스와 통합되어 확장성과 가용성을 높여준다.

DevOps를 위한 Linux 기초 – Epic

개요 이 에픽은 DevOps 작업에 필요한 Linux 기본기를 구축하는 데 초점을 맞춥니다. 이는 학문적 주제가 아니라 운영 도구입니다. 목표 끝까지...