컨테이너가 서버 패키지를 사용하는지 아니면 자체 패키지를 사용하는지 확인하는 확실한 방법

컨테이너가 서버 패키지를 사용하는지 아니면 자체 패키지를 사용하는지 확인하는 확실한 방법

컨테이너화에 대한 나의 이해는 제한적이므로 이 질문이 잘못되었을 수도 있지만 Docker 컨테이너는 상대적으로 가벼운 상태를 유지하기 위해 호스트 시스템의 일부 커널 리소스를 활용한다는 사실을 알고 있습니다. 내가 아는 한, 이는 OS 배포 패키지(예: binutils)로 확장될 수 있습니다.

도커 컨테이너가 호스트 제공 패키지를 활용할 수 있는 능력을 가지고 있다고 생각하는 것이 틀리지 않다고 가정하면, 컨테이너가 호스트할 때 해당 서버에서 찾을 것으로 예상/의도하는 모든 패키지를 열거하는 표준 방법이 있습니까?

답변1

나는 Docker 컨테이너가 상대적으로 가벼운 상태를 유지하기 위해 호스트 시스템의 일부 커널 리소스를 활용한다는 사실을 알고 있습니다.

예, 컨테이너는 호스트 커널을 공유합니다.

내가 아는 한, 이는 OS 배포 패키지(예: binutils)로 확장될 수 있습니다.

그것~할 수 있다, 그러나 이는 매우 이례적이며 컨테이너 외부에서 수동 설정이 필요합니다. 기본적으로 호스트에서 볼륨을 마운트하여 컨테이너가 파일 시스템의 관련 부분에 액세스할 수 있도록 해야 합니다.

대부분의 경우 컨테이너의 사용자 공간 부분은 호스트와 완전히 분리되어 있습니다. 컨테이너가 호스트에서 찾을 것으로 예상하는 패키지를 열거하는 표준 방법은 없습니다. 왜냐하면 컨테이너는 일반적으로 그러한 기대가 없고 그러한 기대를 선언할 방법이 없기 때문입니다. 그러한 컨테이너를 발견하면 문서에서 이에 대해 설명하고, 어떤 종류의 배포 설명자가 있는지(예를 들어Kubernetes용 Helm 차트)에는 필요한 볼륨과 마운트 지점이 포함됩니다(그러나 호스트에서 필요한 것이 무엇인지는 알려주지 않습니다).

컨테이너는 실제로 호스트에 구애받지 않습니다. 적절한 컨테이너 런타임이 있는 모든 시스템에서 실행되며 호스트는 원하는 패키지 시스템을 사용할 수도 있고 전혀 사용할 수도 없습니다. 따라서 컨테이너에는 호스트의 패키지를 요구하는 데 필요한 개념조차 없습니다. 이는 컨테이너의 기본 원칙 중 일부에 위배됩니다.

관련 정보