ちょうどchroot刑務所が何であるかを学んだので、この質問があまり理解できない場合はご了承ください。
デフォルトでは、私のコンピュータでローカルに実行される2つのプロセスがあり、「uname -n」の結果が各プロセス(およびすべての子プロセス)で異なることを望みます。これを行うためにchroot刑務所をどのように使用できますか?
ベストアンサー1
chrootではこれを行うことはできません。しかし、変更すればそうすることができます。UTS名前空間、例えば、共有をキャンセル。
mysystem# unshare --uts sh -c 'hostname test; uname -n'; uname -n
test
mysystem
同様に、対話的に:
最初の端末:
mysystem# unshare --uts bash
mysystem# hostname test
mysystem# exec bash # to refresh prompt
test# uname -n
test
test# strace uname -n 2>&1|tail
brk(NULL) = 0x5592a93f6000
brk(0x5592a9417000) = 0x5592a9417000
uname({sysname="Linux", nodename="test", ...}) = 0
fstat(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
write(1, "test\n", 5test
) = 5
close(1) = 0
close(2) = 0
exit_group(0) = ?
+++ exited with 0 +++
test#
2番目の端末、影響を受けません:
mysystem# uname -n
mysystem
mysystem#
最初の端末でシェルを終了し、名前空間が変更されていない呼び出し端末に戻ります。
test# exit
mysystem#
気づくただホスト名が変更されます。似たようなものがある名前空間さまざまな機能(ネットワーク、マウントポイント...)に使用されます。これがコンテナの礎石です。すべてのコンテナが使用されます(コンテナのもう1つの主要な礎石は次のとおりです)。cgroup)。