
컨테이너(Container)는 애플리케이션과 그 실행 환경(라이브러리, 설정 파일 등)을 함께 패키징하여, 격리된 공간에서 실행할 수 있도록 해주는 가상화 기술이다.
이는 호스트 운영체제의 커널을 공유하며, 독립된 프로세스로 실행된다.
이 기술은 Docker가 등장하기 이전부터 존재했으며, 핵심 기반 기술로는 Linux의
chroot,cgroups,namespaces등이 있다.
컨테이너 기술을 쉽고 효율적으로 사용할 수 있도록 만든 오픈소스 플랫폼이다.
📌 Docker의 특징
Dockerfile을 통해 컨테이너 이미지를 정의하고 재사용할 수 있다.Docker Hub를 통해 이미지를 공유하고 관리할 수 있다.docker run, docker build 등의 직관적인 명령어로 컨테이너 조작이 가능하다.👉 Docker는 컨테이너 기술 그 자체가 아니라, 해당 기술을 쉽게 사용할 수 있게 만든 구현 도구 중 하나이다.
여러 컨테이너의 배포, 관리, 확장, 네트워킹, 로드 밸런싱 등을 자동화하는 기술이다.
이는 단일 서버에서 여러 개의 컨테이너를 수동으로 관리해야 하는 Docker의 한계를 극복하고, 대규모 컨테이너 기반 인프라를 안정적이고 효율적으로 운영하기 위해 필요하다.
1. 자동 확장
Docker 환경에서는 트래픽 증가 시 컨테이너 수를 수동으로 조절해야 하지만, 오케스트레이션 도구는 CPU, 메모리 등의 리소스 사용률을 기준으로 컨테이너를 자동으로 확장하거나 축소할 수 있어 서비스 탄력성과 안정성을 확보할 수 있다.
2. 자가 복구
Docker는 컨테이너가 비정상적으로 종료되면 자동으로 복구하지 않는다.
반면, 오케스트레이션 도구는 장애가 발생한 컨테이너를 자동으로 재시작하거나 다른 노드에 재배포하여 서비스의 안정성과 가용성을 유지할 수 있다.
3. 선언적 인프라
Docker는 실행 명령어나 Docker Compose 파일을 통해 현재 상태를 직접 관리해야 한다.
반면, 오케스트레이션 도구는 선언적 설정 파일(YAML 등)을 통해 원하는 상태를 정의하면, 시스템이 자동으로 그 상태를 유지하도록 관리한다.
이를 통해 일관된 인프라 구성 및 운영 자동화가 가능하다.
📌 대표적인 컨테이너 오케스트레이션 도구로는 Kubernetes, Docker Swarm, Amazon ECS 등이 있으며, 이 중 Kubernetes가 가장 널리 사용된다.
좋은 글 잘 읽고 갑니다~!