Docker Hardened Images의 glibc와 musl 지원
Docker Hardened Images의 glibc와 musl 지원 (glibc and musl support in Docker Hardened Images)
DHI가 glibc와 musl 표준 C 라이브러리를 어떻게 지원하고 어떤 것을 고를지 알아볼게요.
출처: 문서
본문
Docker Hardened Images(DHI)는 더 넓은 오픈소스·엔터프라이즈 소프트웨어 생태계와의 호환성을 희생하지 않고 보안을 우선시하도록 빌드돼요. 이 호환성의 핵심 측면은 glibc와 musl이라는 공통 Linux 표준 라이브러리의 지원이에요.
glibc와 musl이란 (What are glibc and musl?)
Linux 기반 컨테이너를 실행할 때 이미지의 C 라이브러리는 애플리케이션이 운영 체제와 상호작용하는 방식에서 핵심 역할을 해요. 대부분의 현대 Linux 배포판은 다음 표준 C 라이브러리 중 하나에 의존해요:
glibc(GNU C Library): Debian, Ubuntu, Red Hat Enterprise Linux 같은 주류 배포판의 표준 C 라이브러리예요. 널리 지원되며 일반적으로 언어, 프레임워크, 엔터프라이즈 소프트웨어에서 가장 호환성 있는 선택으로 간주돼요.musl:glibc의 가벼운 대안으로, Alpine Linux 같은 최소 배포판에서 흔히 사용돼요. 더 작은 이미지 크기와 성능 이점을 제공하지만,glibc를 기대하는 소프트웨어와 항상 완전히 호환되지는 않아요.
DHI 호환성 (DHI compatibility)
DHI 이미지는 glibc 기반(예: Debian)과 musl 기반(예: Alpine) 변형 모두로 제공돼요. 호환성이 중요한 엔터프라이즈 애플리케이션과 언어 런타임에는 glibc 기반 DHI 이미지를 권장해요.
glibc 또는 musl 무엇을 고를까 (What to choose, glibc or musl?)
Docker Hardened Images는 glibc 기반(Debian)과 musl 기반(Alpine) 변형 모두로 제공되어 워크로드에 가장 잘 맞는 것을 고를 수 있어요.
다음 경우 Debian 기반(glibc) 이미지를 고르세요:
- 엔터프라이즈 워크로드, 언어 런타임, 또는 독점 소프트웨어와 넓은 호환성이 필요할 때.
glibc에 의존하는 네이티브 확장을 가진 .NET, Java, Python 같은 생태계를 사용할 때.- 라이브러리 비호환성으로 인한 런타임 오류의 위험을 최소화하고 싶을 때.
다음 경우 Alpine 기반(musl) 이미지를 고르세요:
- 더 작은 이미지 크기와 줄어든 표면으로 최소 공간을 원할 때.
- 의존성이 알려지고 테스트된 사용자 정의 또는 엄격히 제어된 애플리케이션 스택을 만들 때.
- 최대 호환성보다 시작 속도와 날씬한 배포를 우선시할 때.
확신이 없다면 호환성을 보장하기 위해 Debian 기반 이미지로 시작하고, 애플리케이션의 의존성에 자신감이 생기면 Alpine을 평가하세요.