LXC:ホストからコンテナにフォルダをマウントする方法は?

LXC:ホストからコンテナにフォルダをマウントする方法は?

ホストシステムのフォルダをLXCコンテナにマウントしようとしています。

ホストは/mnt/ssd/solr_dataフォルダを作成します(現在はルートファイルシステムにありますが、後でそこにSSDドライブをマウントする予定ですので準備中です)。

/dataフォルダがコンテナ内にあるかのようにマウントされるようにしたいです。

したがって、コンテナfstabファイルには次のものがあります。

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        ext4    defaults,noatime        0       0

ただし、この方法は機能しません。コンテナを起動すると、次のエラーが発生します。

lxc-start: No such file or directory - failed to mount '/mnt/ssd/solr_data' on '/usr/lib/x86_64-linux-gnu/lxc//data'
lxc-start: failed to setup the mounts for 'Solr4StandAlone'
lxc-start: failed to setup the container
lxc-start: invalid sequence number 1. expected 2
lxc-start: failed to spawn 'Solr4StandAlone'

答え1

コンテナにディレクトリを自動的に作成するには、create=dirfstabにオプションを追加することもできます。

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        none   bind,create=dir

編集:これはLXC専用です。バラよりこのスレッド

すでに「オプション」があるように、ここには2つの新しいLXC関連のインストールフラグが追加されます。

  • create=dir (mkdir_p はそのパスで実行されます)

  • create=file (ディレクトリ名で mkdir_p を実行 + パスで fopen を実行)

これは、権限のないコンテナに必要ないくつかのバインドマウントによって駆動されます。

答え2

/var/lib/lxc/Solr4StandAlone/config行を追加:

lxc.mount.entry = /mnt/ssd/solr_data  /var/lib/lxc/Solr4StandAlone/rootfs/data none bind 0 0

その後、lxc-stopコンテナとlxc-startコンテナを再び停止します。

それがすべてです。

引用:注リンク

答え3

2015 年 9 月 30 日現在、セキュリティパッチのため、構成ファイルの lxc.mount.entry への絶対パスマウントが中断される変更が発生しました。

代わりに相対パスを使用できます

 lxc.mount.entry = /mnt/ssd/solr_data data none bind 0 0

望むより:https://wiki.debian.org/LXC#Bind_mounts_inside_the_container

答え4

LXCは時間の経過とともに変化したので、これは非常に簡単かもしれませんが、少し混乱しているので、貢献したかったのです。私も自分自身を覚えることができるようにこの点を作成しましたが、lxcを使用してデバイスを設定するだけで成功しました。

sudo lxc config device add Solr4StandAlone sdb disk source=/var/lib/lxc/Solr4StandAlone/rootfs/data path=mnt/ssd/solr_data

ノート@biscuitNinjaが述べた変更により、パスパラメータにスラッシュを保持することが重要です。

コンテナからホストへのディレクトリのマウント

関連情報