/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
コンテナの内部に取り付けられます。