実行中のプログラムを残りの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

おすすめ記事