Docker에는 아직도 bootfs가 있나요?

Docker에는 아직도 bootfs가 있나요?

저는 현재 Docker가 어떻게 작동하는지 연구하고 있습니다. 내가 아는 한 Docker는 시작되지 않고 매우 루트가 지정된 환경에서 프로세스를 시작합니다. 그러나 일부 문서를 살펴보면 누군가 Docker에 bootfs가 있다고 언급했습니다. 이것은 부팅 시에만 마운트되고 rootfs가 마운트된 후에는 마운트 해제되는 파일 시스템입니다. 하지만 볼 수도 만질 수도 없습니다. 심지어 찾을 수도 없습니다.

Docker는 여전히 일종의 bootfs를 사용합니까? 예를 들어 다음 기사는 나를 혼란스럽게 합니다.http://collabnix.com/understanding-docker-container-image/. 커널과 cgroup을 포함하는 bootfs가 있습니다. 그러나 내가 아는 한 커널은 Docker 외부에 있으며 호스트 시스템의 일부입니다.

내 주요 질문은 Docker가 bootfs를 사용하여 컨테이너를 "시작"하는 것이 여전히 올바른가요?입니다. 그리고 이 파일 시스템은 어디서 볼 수 있나요?

답변1

내 생각엔 당신이 오해의 소지가 있는 민간 전승을 발견한 것 같습니다. Google 웹사이트에서 "bootfs"를 검색했습니다(예:사이트: docker.com bootfs), 거의 아무것도 발견되지 않았습니다. 사실 4개의 결과가 나왔습니다. 저는 이 네 가지 결과를 각각 검색했고 제가 찾은 내용을 설명하겠습니다.

이는 이미지 및 컨테이너의 구조와 스토리지 드라이버와의 관계를 설명합니다. "bootfs" 문자열은 이 페이지에 나타나지 않습니다. "boot" 문자열도 마찬가지입니다.

이 문서에서는 보안 관점에서 Docker 컨테이너의 구현을 설명합니다. "bootfs" 문자열은 한 번만 나타납니다. 다이어그램에서는 호스트의 부팅 파일 시스템을 나타내는 것으로 보입니다.

이 포럼 토론에서 "bootfs" 문자열은 한 번만 나타납니다. 이는 다시 컨테이너가 아닌 호스트를 참조합니다.

여기서 문자열은 다양한 패키지 이름의 하위 문자열로 나타납니다. Docker 컨테이너 시작과 관련이 있다는 표시는 없습니다.

나도 검색해봤는데도커 CE GitHub그러나 문자열 "bootfs"의 인스턴스는 발견되지 않았습니다.

수많은 구글 검색 끝에"docker bootfs 위치"그리고"docker bootfs는 어디에 있나요"Docker bootfs가 컨테이너 수준에 존재한다는 생각이 잘못된 이름임을 나타내는 것으로 보이는 여러 결과를 발견했습니다. 다음은 그러한 결과입니다.

이 블로그 게시물에서는 Docker 시작 프로세스를 자세히 설명하고 이를 일반적인 시작 프로세스와 구별합니다.

이 토론에서 기여자들은 bootfs를 "만질 수 없는" "개념"이라고 부릅니다.

답변2

다른 답에 만족하지 못하고, 책을 신뢰하는 데 익숙해진 분들을 위해 제가 조사한 내용을 기록으로 남깁니다. 오늘날 나는 bootfs가 신화이거나 적어도 오해의 소지가 있고 오해를 받고 있다고 믿습니다.

나는 2019년 Library University 책에서 bootfs에 대해 읽었습니다. 나는 책의 강사에게 연락했고, 강사는 다시 저자에게 연락했고, 그들의 정보는 stackoverflow를 포함하여 인터넷에서 나온 것으로 밝혀졌습니다. 불행하게도 나는 책에 대한 나의 신뢰를 재고해야 한다.

Google과 Seller.google에서 bootfs가 정확히 무엇인지 검색하는 데 몇 시간을 보냈지만 거의 정보를 찾을 수 없습니다. 나에게 적어도 어느 정도 유용한 대부분의 소스는 docker와 함께 언급됩니다.

하단 레이어인 Bootfs는 docker's igal이 발표한 백서에서 명확하게 볼 수 있습니다. https://www.docker.com/sites/default/files/WP_Intro%20to%20container%20security_03.20.2015%20%281%29.pdf 이제 docker 문서에서 읽을 수 있듯이,이미지는 호스트 파일 시스템에 저장됩니다.docker는 각 컨테이너에 대해 쓰기 시 복사 레이어만 생성하여 이를 활용합니다.bootfs는 부팅하는 호스트 시스템을 의미하는 것 같습니다..

불행히도 일부 사람들은 자신이 확신하는 bootfs에 관한 기사를 작성하지만 출처를 인용하지 않습니다. 따라서 bootfs는 각 이미지에 대해 생성된 레이어라는 것을 읽을 수 있습니다.

답변3

또한 Docker에서 bootfs의 존재에 대한 많은 정보를 찾을 수 없었습니다. 그러나 나는 The Docker Book에서 이 주제에 대한 James Turnbull의 토론을 발견했습니다.

Docker 이미지는 서로 겹쳐진 파일 시스템으로 구성됩니다. 기본은 일반적인 Linux/Unix 부팅 파일 시스템과 유사한 부팅 파일 시스템 bootfs입니다. Docker 사용자는 부팅 파일 시스템과 상호 작용할 수 없습니다. 실제로 컨테이너가 시작되면 컨테이너는 메모리로 이동되고 부팅 파일 시스템은 마운트 해제되어 initrd 디스크 이미지에 사용되는 RAM을 확보합니다.

지금까지는 일반적인 Linux 가상화 스택과 매우 유사해 보입니다. 실제로 Docker는 시작 파일 시스템 위에 루트 파일 시스템 rootfs를 계층화합니다. rootfs는 하나 이상의 운영 체제(예: Debian 또는 Ubuntu 파일 시스템)일 수 있습니다.

https://dockerbook.com/버전: v18.09(6172afc), 72페이지

관련 정보