실행 중인 프로그램을 나머지 Linux 시스템으로부터 분리할 수 있는 방법이 있습니까?

실행 중인 프로그램을 나머지 Linux 시스템으로부터 분리할 수 있는 방법이 있습니까?

먼저 가상화와 컨테이너에 대해 배웠습니다. 나는 "그가 컨테이너를 원한다"는 생각이 든다고 확신합니다. (부정하지 마세요!)

그러나 컨테이너는 chroot와 같습니다. 컨테이너에서 bash를 실행하려면 bash 실행 파일과 모든 필수 라이브러리를 컨테이너 FS 어딘가에 복사/미러링해야 합니다. (제가 잘못 이해한 것이 있으면 정정해 주십시오.)


내가 알고 싶은 것은 현재 네임스페이스에서 (원시 FS를 사용하므로 복사가 필요하지 않음) busybox와 같은 프로그램을 시작할 수 있는지 그리고그 다음에고유한 디렉터리에 액세스할 수 있도록 격리합니다(예: Linux FS 네임스페이스 사용).

어쨌든 ssh(실제로는 sftp)는 sshd 실행 파일이 chrooted FS에 있을 필요 없이 비슷한 작업을 수행할 수 있는 것 같습니다. 그러나 나는 여전히 나에게 무슨 일이 일어나고 있는지 이해하는 능력이 부족했습니다.

답변1

컨테이너를 찾으시는 것 같아요.

아니면 아닐 수도 있습니다. 결국 Linux 네임스페이스는 매우 투명할 수 있습니다. 나는 아니에요믿다unshare이미 호출된 프로세스에 네임스페이스를 지정 하는 방법이 있지만 unshare호출 시 네임스페이스를 사용할 수 있지만 효과는 거의 없습니다.

cd   /tmp
echo you >hey
sudo unshare -m busybox
echo hey >you; cat  hey

you

...그리고 다른 터미널에서...

cd   /tmp
cat  you

hey

...마운트 트리는공유됨기본적으로 상위 네임스페이스에서 busybox마운트 전파 플래그가 모두 다음으로 설정되어 있지만사적인기본적으로 마운트 트리에 대한 변경 사항이 네임스페이스에 영향을 미칠 때까지는 아무런 차이가 없습니다. 이건 꼭 할 필요는 없어통과하다busybox도 작동합니다.

busybox... 터미널 에서 ...

echo "#$$"

#8854

...그리고 이제 다른 곳에서...

sudo nsenter -t8854 -m mount -t tmpfs none /tmp
cd .; cat hey

you

...하지만 busybox터미널에서, 따라서 방금 구현한 네임스페이스에서 mount...

cd .;  cat hey

cat: hey: no such file or directory

/tmp...새로운 개인 tmpfs가 명령의 공유에 마운트되기 때문입니다 nsenter...

cd ..
umount tmp
cat tmp/hey

you

관련 정보