LXC:ホストによって公開されたファイルはrootfsディレクトリに000の権限を持ちます。

LXC:ホストによって公開されたファイルはrootfsディレクトリに000の権限を持ちます。

/var/lib/lxc/container1/configコンテナがホスト上のファイルを表示できるようにするには、次のものがあります。

lxc.mount.entry = /etc/someconf.conf etc/someconf.conf none bind,create=file 0 0

コンテナで見ることができ、644そこに権限がありますが、これはホストシステムで見るものです。

root@node01:~# ls -l /var/lib/lxc/container1/rootfs/etc/someconf.conf 
---------- 1 root root 0 Jul  16 11:29 /var/lib/lxc/container1/rootfs/etc/someconf.conf

なぜこれが起こるのか、解決策、またはより良い方法があるのか​​知っていますか?

答え1

要求時に初めてデフォルトファイルが作成され(create=file存在しない)ため、そのファイルにバインドマウントが適用されることがわかります。

/etc/someconf.confコンテナの名前空間には、ホストがインストールした物理ファイルがこの空のファイルを上書きするため、この空のファイルは表示されません。はい、ディレクトリにディレクトリをバインドマウントできます。またはファイル内のファイル。

コンテナに表示されるがホストにも表示されるファイルシステムの実際のビューを取得するには、/proc/[pid]/root/PID [pid]を持つプロセスが表示するもの(ホストに表示されるもの)のビューを提供するショートカットを使用できます。つまり、コンテナのマウントネームスペースにあります。

これらの PID をプログラムで取得するために使用できますlxc-info(コンテナの初期 PID はコンテナ内の PID 1 と見なされます)。実行中のコンテナの場合、foo次のコマンドはホストに表示されるPIDのみを出力します。

lxc-info -H -p -n foo

したがって、コンテナの観点からファイルを表示しますが、まだホストの観点から見るには、コマンド全体は次のようになります。

ls -l /proc/$(lxc-info -H -p -n foo)/root/etc/someconf.conf

同じ方法を使用して、ホストとコンテナの「見えない」ファイルシステム間でファイルを簡単に移動できます。一時ファイルシステム/tmpコンテナの内部に取り付けられます。

関連情報