systemd-nspawn
ro 설치 내부에 특별한 작업이 수행 됩니까 ? 아니면 ro 설치 에 적합한 chroot
다른 실행 방법을 제공합니까 ? 이것chroot
--bind
proc
sys
문서에 따르면,
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 -ef
inside와 같은 명령을 사용하면 해당 네임스페이스의 프로세스만 볼 수 있고 외부 또는 다른 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"하면 첫 번째 인스턴스가 종료될 때까지 다른 셸에서 해당 디렉터리를 다시 실행할 수 없습니다.