web-dev-qa-db-ja.com

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'
25
David Parks

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

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

編集:これはLXCに固有です。参照 このスレッド

すでに「オプション」があったように、これは2つの新しいLXC固有のマウントフラグを追加します。

  • create = dir(パスでmkdir_pを実行します)

  • create = file(dirnameでmkdir_p +パスでfopenを実行します)

これは、特権のないコンテナに必要なバインドマウントのいくつかによって動機付けられました。

17
little-dude

/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再びコンテナ。

それだけで十分です。

ref: 参照リンク

16
Mausy5043

マウントが正しく機能する前に、ローカルコンテナーに/dataフォルダーを作成する必要がありました。

私はこのfstabエントリも使用しました:

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        none   bind     0       0
11
David Parks

2015/09/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

9
biscuitNinja

LXCは時間の経過とともに変化してきたため、これは非常に簡単ですが、少し困惑したので、貢献したいと考えました。私はこのためにGistも作成しました。自分自身を思い出せるようにするためですが、lxc configデバイスを使用するだけでうまくいきます。

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

@biscuitNinjaで言及されている変更のため、パスの引数にはフロントスラッシュを残さないことが重要です

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

6
ekydfejj

libvirtを使用してlxcコンテナを作成する場合は、次のように、ホスト上のディレクトリをpassthroughにすることができます。

root@localhost:/# cat /etc/libvirt/lxc/my_container.xml
...
 <filesystem type='mount' accessmode='passthrough'>
    <source dir='<dir on Host>'/>
    <target dir='<dir on container>'/>
 </filesystem>
....
1