chroot 및 바인드 마운트가 있는 systemd-nspawn?

chroot 및 바인드 마운트가 있는 systemd-nspawn?

systemd-nspawnro 설치 내부에 특별한 작업이 수행 됩니까 ? 아니면 ro 설치 에 적합한 chroot다른 실행 방법을 제공합니까 ? 이것chroot--bindprocsys문서에 따르면,

chroot(1)과 유사하지만 파일 시스템 계층, 프로세스 트리, 다양한 IPC 하위 시스템, 호스트 및 도메인 이름을 완전히 가상화하므로 더욱 강력합니다.

이것이 어떻게 정의되어 있는지 잘 모르겠습니다.

  • 가상화된 파일 시스템 계층 구조

    chroot이건 루트를 바꾸는 기능이 아닌가요 ?

  • 및 프로세스 트리

    이것이 무엇을 의미하는지 잘 모르겠습니다.

  • 다양한 IPC 하위 시스템

    어떤 하위 시스템이 있나요? 누군가 이것이 정확히 무엇을 의미하는지 말해 줄 수 있습니까?

  • 호스트 이름 및 도메인 이름

    나도 이게 무슨 뜻인지 잘 모르겠는데? 이게 바로 그거 아닌가 /proc/sys/kernel/domainname?/proc/sys/kernel/hostname

chroot나는 스크립트 를 사용했습니다 mount --bind. 이것이 더 설득력 있어 보이지만 추가 기능에 대해서는 모호합니다. 이것이 나에게 어떤 새로운 것을 가져다 주나요?

답변1

  • 가상화된 파일 시스템 계층 구조

마운트 네임스페이스를 사용합니다. chroot네임스페이스 아래에서 파일 시스템을 마운트 및 마운트 해제할 수 있고 외부 또는 마운트된 다른 네임스페이스에서 숨겨지기 때문에 더욱 강력합니다 .

보세요이 기사Linux 네임스페이스(특히 마운트 네임스페이스)에서 역할을 간략하게 설명합니다.

  • 및 프로세스 트리

이는 네임스페이스 내에서 새로운 PID 번호를 얻게 된다는 의미입니다. 네임스페이스 내부의 PID 1은 외부의 PID 12001일 수 있고, 내부의 PID 40은 외부의 PID 13987일 수 있습니다. 특히 모든 PID가 네임스페이스 내부에 매핑되는 것은 아니므로 ps -efinside와 같은 명령을 사용하면 해당 네임스페이스의 프로세스만 볼 수 있고 외부 또는 다른 PID 네임스페이스 프로세스의 프로세스는 볼 수 없습니다.

위에서 언급한 문서에서는 PID 네임스페이스에 대한 좋은 개요도 제공합니다.

  • 다양한 IPC 하위 시스템

공유 메모리, 세마포어... 명령이 표시하는 내용입니다 ipcs. 다시 말하지만, 내가 지적한 기사에는 이에 대해 더 많은 내용이 나와 있습니다. (SysV IPC나 이 명령에 대해 들어본 적이 없다면 ipcs무시해도 됩니다.)

  • 호스트 이름 및 도메인 이름

이는 실제로 UTS 네임스페이스이며, 기사에서 더 자세한 내용을 다시 제공합니다.

명령이 반환하는 내용을 가상화합니다 ( 컨테이너 내부를 uname볼 수 있음 ). uname -a게다가 주문 hostname도 있습니다 domainname. 네, /proc말씀하신 두 파일도 마찬가지입니다.

간단히 말해서 이는 systemd-nspawn컨테이너 격리를 제공하기 위해 Linux 네임스페이스를 사용하고 있음을 알려줍니다. 이는 Docker와 같은 다른 컨테이너 기술에서도 사용됩니다.

답변2

systemd-nspawn에는 중요한 제한 사항도 있습니다. 즉, 언제든지 하나의 인스턴스만 가질 수 있는 반면 chroot를 사용하면 동일한 디렉터리에 여러 번 chroot할 수 있습니다.

즉, systemd-nspawn을 사용하여 디렉터리에 "chroot"하면 첫 번째 인스턴스가 종료될 때까지 다른 셸에서 해당 디렉터리를 다시 실행할 수 없습니다.

관련 정보