티스토리 뷰
컨테이너 기술과 Docker를 명확히 구분하여 설명하세요. 컨테이너 기술이 Docker 이전에도 존재했던 개념임을 언급하고, Docker가 컨테이너 기술을 구현한 하나의 도구라는 관점에서 설명해주세요. 또한, Docker 외에 컨테이너 기술을 구현한 다른 도구의 예시를 들어보세요
1. 컨테이너 기술이란?
쉽게 말하자면 '어디서든 실행되는 독립된 공간'
과거에는 개발자가 내 컴퓨터에서 프로그램을 완성해서 서버에 올리면 작동하지 않는 경우가 많았는데, 이는 운영체제나 설치된 프로그램 버전 등 '환경'이 달랐기 때문임
이걸 해결하기위해 나온것이 '컨테이너 기술' 코드(프로그램)와 환경(실행에 필요한 모든 파일)을 하나의 상자에 담아 격리하는 기술 이렇게 하면 내 컴퓨터든, 회사 서버든, 클라우드든 어디서든 똑같이 실행됨
2. 도커란?
어렵고 복잡한 컨테이너 기술을 누구나 쉽게 쓸 수 있도록 만든 '소프트웨어 도구'
3. 도커가 최초가 아니다
도커가 최초의 컨테이너 기술은 아님
도커가 등장하기 훨씬 전부터 리눅스 운영체제에는 격리를 위한 기술들이 이미 존재했었음
- chroot (1979년): 프로세스의 루트 디렉토리를 격리하는 기초적인 기술
- cgroups (2006년): CPU, 메모리 등의 자원을 제한하는 기술
- LXC (2008년): 리눅스 커널 기능을 합친 초기 컨테이너 기술
4. 왜 도커가 대세일까?
이미지(Image) 시스템: 프로그램을 실행하는 데 필요한 모든 것을 '스냅샷' 찍듯이 파일 하나로 고정, 덕분에 "내 컴퓨터에선 되는데 왜 여기선 안 돼?"라는 말이 사라짐
도커 허브(Docker Hub): 전 세계 개발자들이 만들어둔 컨테이너를 마치 앱스토어처럼 다운로드해서 바로 쓸 수 있는 생태계를 만듦
5. 도커 외에 컨테이너 기술을 구현한 다른 도구
Podman (포드맨) : 도커와 사용법이 거의 똑같지만, 관리자 권한 없이 작동하여 보안에 더 유리
LXC (Linux Containers) : 도커의 조상 격으로, 특정 앱 하나보다는 리눅스 운영체제 전체를 가볍게 격리할 때 주로 쓰임
containerd (컨테이너디) : 도커의 핵심 엔진이었으나 독립된 도구 현재는 쿠버네티스(Kubernetes) 같은 거대한 시스템의 '심장' 역할을 맡고있음
요약
컨테이너 기술 : 프로그램을 격리해서 어디서든 실행되게 하는 기술 개념
도커 : 컨테이너 기술을 쉽게 쓰게 해주는 소프트웨어 도구
(컨테이너 기술이 .mp3 포맷이라면 도커는 스포티파이 같은 소프트웨어)
컨테이너 오케스트레이션의 개념과 필요성을 설명하고, Docker 단독 사용 환경과 비교하여 컨테이너 오케스트레이션이 해결하는 주요 문제점 3가지(자동 확장, 자가 복구, 선언적 인프라)를 설명하세요.
1 .컨테이너 오케스트레이션이란?
컨테이너 오케스트레이 Docker만 사용하는 환경에서는 서비스 규모가 커질수록 관리자가 직접 모든 컨테이너의 상태를 확인하고, 서버 부하를 체크하며, 문제가 생기면 직접 명령어를 입력해 다시 띄워야 함 서비스 규모가 수십, 수백 대의 서버로 늘어나면 사람이 이를 관리하는 것은 불가능에 가깝기 때문에 자동화된 도구가 필수적 션은 수많은 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화하는 프로세스를 의미
2. 도커 단독 사용 환경과 비교
| 구분 | 도커 단독 사용(Single Host) | 컨테이너 오케스트레이션(Multi Host) |
| 관리 대상 | 단일 서버 내부의 컨테이너 | 여러 서버(클러스터)에 걸친 컨테이너 |
| 장애 대응 | 관리자가 수동으로 재시작 | 시스템이 자동으로 감지 및 복구 |
| 확장성 | 수동으로 컨테이너 수 조절 | 트래픽에 따라 자동 확장(Auto-scaling) |
| 배포 방식 | 명령형 (하나하나 지시) | 선언적 (최종 상태 정의) |
3. 컨테이너 오케스트레이션이 해결하는 주요 문제점 3가지
자동 확장 :
Docker 단독 환경에서는 갑작스러운 트래픽 증가 시 관리자가 모니터링을 하다가 직접 컨테이너 개수를 늘려야 하지만,
오케스트레이션은 CPU나 메모리 사용량이 설정치를 넘어서면 자동으로 컨테이너 인스턴스를 늘림. 반대로 트래픽이 줄어들면 컨테이너 수를 줄여 자원 낭비를 방지함
자가 복구 :
서버에 장애가 발생하여 컨테이너가 죽었을 때, Docker 단독 환경에서는 서비스 중단으로 이어지지만,
오케스트레이션 도구는 컨테이너의 상태를 끊임없이 체크(Health Check). 만약 특정 컨테이너가 응답하지 않거나 노드(서버) 자체가 다운되면, 즉시 다른 정상적인 서버에 새로운 컨테이너를 생성하여 서비스 연속성을 보장함
선언적 인프라 :
Docker 환경에서는 관리자가 시스템의 변화 과정을 일일이 지시해야 하지만, 관리자가 YAML 파일 등에 최종 상태를 정의해두면, 오케스트레이션 도구가 현재 상태(Current State)와 원하는 상태를 비교하여 차이가 발생할 경우(예: 하나가 죽어서 2개만 남음) 자동으로 그 차이를 메꿈. 이를 통해 인프라 관리가 훨씬 일관적이고 예측 가능해짐
요약
관리자의 '수동 개입'을 줄이고, 시스템의 '자율 운영'을 가능케 하는 기술, 그것이 컨테이너 오케스트레이션의 본질
Docker가 컨테이너라는 '악기'를 만드는 도구라면, 오케스트레이션은 그 악기들을 모아 완벽한 연주를 만드는 '지휘자'
3가지 키워드
'자동 확장' , '자가 복구', '선언적 인프라'
