私はこのレポにgolangコードを実行していますが、マウント名前空間に問題があります。コードが行うべきことは、独自のマウント名前空間内にプロセスを作成することです。だから私がsudo go run main.go run /bin/bash
とコードを実行し、ディレクトリmytemp
の中にファイルを作成する場合、私は新しい開始プロセス内からそのファイルを見ることができるはずですが、そのファイルをホスト上のrootfsディレクトリに移動しようとすると、私はマウント名前空間のおかげでそのファイルを見ることができないはずです。 残念ながら私はまだこのファイルを見るので、実行しているプロセスは名前空間にマウントされていないようです。 コードを実行するには、https://github.com/ericchiang/containers-from-scratch/releases/download/v0.1.0/rootfs.tar.gzをrootfsとして使用し、/home/me
の下に移動しました。次に、tmpfsマウントターゲットとして使用するmytemp
ディレクトリを作成しました。 プロセスがマウントされた名前空間を持たない理由について考えてください。コンテナとsyscall.CLONE_NEWNS
ありがとうございます!
[ 'mount'](http://man7.org/linux/man-pages/man2/を呼び出しますmount.2.html)syscallに 'MS_PRIVATE | MS_REC'フラグを設定します。これは[Go](https://golang.org/pkg/syscall/#Mount)でも実行できます。 – ephemient
これは正しい@ephemientです。次の例があります。 '' syscall.Mount( ""、 "/"、 ""、syscall.MS_PRIVATE | syscall.MS_REC、 "" ' –