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