IM Info
리눅스

컨테이너 호스트 OS 비교: Alpine vs Flatcar vs Bottlerocket

kuro editor
업데이트
3분
컨테이너 호스트 OS 비교: Alpine vs Flatcar vs Bottlerocket

Docker나 Kubernetes 워커 노드에 어떤 OS를 올리느냐는 컨테이너 이미지 안에 무엇을 넣을지와는 완전히 다른 문제예요. Alpine Linux를 컨테이너 이미지 기반으로 다뤘다면, 이번에는 관점을 바꿔서 컨테이너를 실행하는 호스트 서버 자체의 OS를 살펴봐야 해요. 그렇다면 Alpine, Flatcar, Bottlerocket이라는 세 컨테이너 호스트 OS는 서로 어떻게 다를까요?

Alpine Linux는 범용 초경량 배포판이다

Alpine은 원래 컨테이너 이미지 기반으로 유명하지만, 호스트 OS로도 종종 쓰여요.

  • 작은 설치 용량: musl libc와 BusyBox 기반이라 설치 용량이 매우 작아요.
  • 범용성: 범용 배포판이라 필요하면 일반적인 패키지도 자유롭게 설치할 수 있어요.
  • 직접 구성해야 하는 보안 설정: 다만 호스트 전용으로 설계된 게 아니라서, Kubernetes 운영에 필요한 세부 보안 설정은 직접 구성해야 해요.

Flatcar Container Linux는 CoreOS의 정신을 잇는다

Flatcar는 단종된 CoreOS의 정신을 잇는 배포판으로, 처음부터 “컨테이너만 돌리는 서버”를 목표로 설계됐어요.

  • 원자적 업데이트: 루트 파일시스템이 읽기 전용이고 A/B 파티션 구조로 원자적(atomic) 업데이트가 이루어져요.
  • 패키지 매니저 부재: 패키지 매니저 자체가 없어서, 필요한 도구는 컨테이너로 실행해요.
  • 클러스터 운영 최적화: etcd, Kubernetes와의 통합을 염두에 두고 설계돼서 클러스터 운영에 최적화돼 있어요.

“서버에 뭔가를 설치한다”는 개념 자체를 없애고, 오직 컨테이너 오케스트레이션을 돌리기 위한 최소한의 기반으로만 존재하는 셈이에요.

Bottlerocket은 AWS가 만든 컨테이너 전용 OS다

Bottlerocket은 AWS가 자사 클라우드에 최적화해 만든 오픈소스 컨테이너 호스트 OS예요.

  • 극단적으로 줄인 공격 표면: 패키지 매니저가 없고 SSH도 기본 비활성화돼 있어서 공격 표면을 극단적으로 줄인 설계예요.
  • API 기반 설정: 설정은 SSH 접속 대신 API를 통해서만 변경할 수 있어요.
  • AWS 연동 특화: 컨테이너 런타임(containerd)과 Kubernetes/ECS 연동에 특화돼 있어요.
  • 메모리 안전성: Rust로 작성된 구성 요소 비중이 높아서 메모리 안전성 측면에서도 강점이 있어요.

세 가지를 표로 비교하면

기준AlpineFlatcarBottlerocket
성격범용 초경량 배포판컨테이너 전용 OS컨테이너 전용 OS
패키지 매니저apk 있음없음없음
SSH 접속기본 가능제한적기본 비활성화
업데이트 방식일반 패키지 업데이트A/B 원자적 업데이트A/B 원자적 업데이트
주 사용처범용 컨테이너 이미지온프레미스 K8s 클러스터AWS EKS/ECS

어떤 상황에 무엇을 골라야 할까

결론부터 말하면 선택 기준은 운영 환경과 보안 요구 수준에 달려 있어요.

  • 가볍고 유연한 호스트가 필요하다면: Alpine이에요. 필요하면 임시로 디버깅 도구도 설치할 수 있어요.
  • 자체 데이터센터에서 안정적인 운영을 원한다면: Flatcar예요. 원자적 업데이트와 자동 롤백이 운영 부담을 크게 줄여줘요.
  • AWS 환경에서 공격 표면을 최소화하고 싶다면: Bottlerocket이에요. SSH조차 열지 않는 설계 철학이 규제 산업 환경에 특히 유리해요.

세 배포판 모두 서버에 이것저것 설치해서 관리하는 전통적인 방식과 결별하고, 컨테이너만 실행되는 불변 인프라(immutable infrastructure)를 지향한다는 공통점이 있어요. 이건 Fedora Silverblue의 불변 철학이 서버 영역에서는 이미 훨씬 더 극단적으로 실현돼 있다는 뜻이기도 하고, ARM 서버 생태계가 커지는 흐름과 맞물려 이런 경량 불변 호스트 OS의 존재감은 앞으로 더 커질 가능성이 높아요.

자주 묻는 질문

Q1. Alpine을 컨테이너 호스트 OS로 써도 되나요?

네, 가능하지만 호스트 전용으로 설계된 게 아니라서 Kubernetes 운영에 필요한 세부 보안 설정은 직접 구성해야 해요.

Q2. Flatcar에는 왜 패키지 매니저가 없나요?

서버에 뭔가를 설치한다는 개념 자체를 없애고 컨테이너 오케스트레이션만을 위한 최소 기반으로 설계됐기 때문에, 필요한 도구는 컨테이너로 실행해요.

Q3. Bottlerocket은 왜 SSH를 기본으로 막아두나요?

공격 표면을 극단적으로 줄이기 위한 설계이고, 설정 변경은 SSH 접속 대신 API를 통해서만 이루어져요.

Q4. AWS 환경이 아니어도 Bottlerocket을 쓸 수 있나요?

기술적으로는 가능하지만 AWS EKS/ECS와의 연동에 특화돼 있어서, 온프레미스 환경이라면 Flatcar가 더 적합해요.

Q5. 세 OS의 공통점은 뭔가요?

모두 서버에 이것저것 설치해서 관리하는 전통적인 방식과 결별하고, 컨테이너만 실행되는 불변 인프라를 지향한다는 공통점이 있어요.

k
kuro editor 자료 조사하고 분석하고 글을 읽기 쉽게 작성합니다
프로필

댓글

첫 번째 댓글을 남겨보세요!