컨테이너화에 대한 나의 이해는 제한되어 있으므로 이 질문은 잘못 안내될 수 있지만 Docker 컨테이너는 상대적으로 가벼운 상태를 유지하기 위해 호스트 시스템의 커널 리소스 중 일부를 활용한다는 것을 알고 있습니다. 내가 아는 한 이것은 운영 체제 분산 패키지(예: binutils)로 확장될 수 있습니다.
도커 컨테이너가 호스트에서 제공하는 패키지를 활용할 수 있다고 생각하는 것이 착각이 아니라고 가정하면, 호스팅될 때 컨테이너가 특정 서버에서 찾을 것으로 예상/의도하는 모든 패키지를 열거하는 표준 방법이 있습니까?
답변1
Docker 컨테이너는 상대적으로 가벼운 상태를 유지하기 위해 호스트 시스템의 커널 리소스 중 일부를 활용한다는 것을 알고 있습니다.
예, 컨테이너는 호스트 커널을 공유합니다.
내가 아는 한 이것은 운영 체제 분산 패키지(예: binutils)로 확장될 수 있습니다.
그것할 수 있는, 그러나 이는 매우 드문 일이며 컨테이너 외부에서 수동 설정이 필요합니다. 기본적으로 컨테이너가 파일 시스템의 관련 부분에 액세스할 수 있도록 호스트에서 볼륨을 마운트해야 합니다.
대부분의 경우 컨테이너의 사용자 공간 부분은 호스트와 완전히 분리되어 있습니다. 컨테이너가 호스트에서 찾을 것으로 예상하는 패키지를 열거하는 표준 방법은 없습니다. 컨테이너는 일반적으로 그러한 기대를 갖고 있지 않으며 그러한 기대를 선언할 방법이 없기 때문입니다. 그러한 컨테이너를 발견하면 문서는 그것이 어떤 것인지, 배포 설명자가 있는지 여부를 알려줄 것입니다(예를 들어Kubernetes용 Helm 다이어그램)에는 필요한 볼륨과 마운트 지점이 포함됩니다(그러나 호스트에서 필요한 것이 무엇인지는 알려주지 않습니다).
컨테이너는 사실상 호스트에 구애받지 않습니다. 적절한 컨테이너 런타임이 있는 모든 시스템에서 실행되며 호스트는 원하는 패키지 시스템을 사용할 수도 있고 전혀 사용할 수도 없습니다. 따라서 컨테이너에는 호스트에서 패키지를 요구하는 데 필요한 개념조차 없습니다. 이는 컨테이너의 기본 원칙 중 일부를 위반하는 것입니다.