[SB 3기] 코드잇 스프린트 위클리페이퍼 11주차

JHLee·2025년 6월 29일
post-thumbnail

Q. 컨테이너 기술과 Docker를 명확히 구분하여 설명하세요. 컨테이너 기술이 Docker 이전에도 존재했던 개념임을 언급하고, Docker가 컨테이너 기술을 구현한 하나의 도구라는 관점에서 설명해주세요. 또한, Docker 외에 컨테이너 기술을 구현한 다른 도구의 예시를 들어보세요.

✅ 컨테이너 기술이란?

컨테이너(Container)는 애플리케이션과 그 실행 환경(라이브러리, 설정 파일 등)을 함께 패키징하여, 격리된 공간에서 실행할 수 있도록 해주는 가상화 기술이다.
이는 호스트 운영체제의 커널을 공유하며, 독립된 프로세스로 실행된다.

이 기술은 Docker가 등장하기 이전부터 존재했으며, 핵심 기반 기술로는 Linux의 chroot, cgroups, namespaces 등이 있다.

👍 컨테이너 기술의 주요 장점

  • 가볍고 빠른 속도 : 가상머신과 달리 별도의 OS를 포함하지 않아 리소스 사용량이 적고, 실행 속도가 빠르다.
  • 환경 일관성 : 어떤 환경에서도 동일하게 실행된다.
  • 배포 자동화 : CI/CD 파이프라인과의 연동을 통해 컨테이너 단위로 손쉽게 배포 및 운영 자동화가 가능하다.
  • 효율적인 자원 활용 : 여러 컨테이너가 하나의 OS 커널을 공유하므로 서버 자원을 보다 효율적으로 활용할 수 있다.

✅ Docker란?

컨테이너 기술을 쉽고 효율적으로 사용할 수 있도록 만든 오픈소스 플랫폼이다.

📌 Docker의 특징

  • 이미지 기반 배포 방식 : Dockerfile을 통해 컨테이너 이미지를 정의하고 재사용할 수 있다.
  • 중앙 저장소 제공 : Docker Hub를 통해 이미지를 공유하고 관리할 수 있다.
  • 간편한 CLI 명령어 : docker run, docker build 등의 직관적인 명령어로 컨테이너 조작이 가능하다.

👉 Docker는 컨테이너 기술 그 자체가 아니라, 해당 기술을 쉽게 사용할 수 있게 만든 구현 도구 중 하나이다.

✅ Docker 외에 컨테이너 기술을 구현한 도구 예시

  • Podman : 데몬 없이 컨테이너를 실행할 수 있는 Docker 호환 CLI 도구
  • LXC (Linux Containers) : Docker 이전에 사용된 리눅스 기반의 전통적인 컨테이너 기술
  • rkt (Rocket) : CoreOS에서 개발한 컨테이너 런타임으로 보안성과 유연성을 강화했으나 현재는 개발이 중단된 상태
  • containerd : CNCF가 관리하는 범용 컨테이너 런타임으로, Docker와 Kubernetes 모두에서 사용 가능
  • CRI-O : Kubernetes 전용 컨테이너 런타임으로, OCI(Open Container Initiative) 표준을 따름

Q. 컨테이너 오케스트레이션의 개념과 필요성을 설명하고, Docker 단독 사용 환경과 비교하여 컨테이너 오케스트레이션이 해결하는 주요 문제점 3가지(자동 확장, 자가 복구, 선언적 인프라)를 설명하세요.

✅ 컨테이너 오케스트레이션이란?

여러 컨테이너의 배포, 관리, 확장, 네트워킹, 로드 밸런싱 등을 자동화하는 기술이다.
이는 단일 서버에서 여러 개의 컨테이너를 수동으로 관리해야 하는 Docker의 한계를 극복하고, 대규모 컨테이너 기반 인프라를 안정적이고 효율적으로 운영하기 위해 필요하다.

🧐 컨테이너 오케스트레이션이 해결하는 주요 문제점 3가지 (🆚 Docker)

1. 자동 확장
Docker 환경에서는 트래픽 증가 시 컨테이너 수를 수동으로 조절해야 하지만, 오케스트레이션 도구는 CPU, 메모리 등의 리소스 사용률을 기준으로 컨테이너를 자동으로 확장하거나 축소할 수 있어 서비스 탄력성과 안정성을 확보할 수 있다.

2. 자가 복구
Docker는 컨테이너가 비정상적으로 종료되면 자동으로 복구하지 않는다.
반면, 오케스트레이션 도구는 장애가 발생한 컨테이너를 자동으로 재시작하거나 다른 노드에 재배포하여 서비스의 안정성과 가용성을 유지할 수 있다.

3. 선언적 인프라
Docker는 실행 명령어나 Docker Compose 파일을 통해 현재 상태를 직접 관리해야 한다.
반면, 오케스트레이션 도구는 선언적 설정 파일(YAML 등)을 통해 원하는 상태를 정의하면, 시스템이 자동으로 그 상태를 유지하도록 관리한다.
이를 통해 일관된 인프라 구성 및 운영 자동화가 가능하다.

📌 대표적인 컨테이너 오케스트레이션 도구로는 Kubernetes, Docker Swarm, Amazon ECS 등이 있으며, 이 중 Kubernetes가 가장 널리 사용된다.


📄 참고 문서

  • 코드잇 강의 교안
profile
개발자로 성장하기

1개의 댓글

comment-user-thumbnail
2025년 6월 30일

좋은 글 잘 읽고 갑니다~!

답글 달기