web-dev-qa-db-ja.com

LVM上のホストとLXCコンテナー間でファイルを転送する簡単な方法

これは、同じファイルシステムを共有するコンテナーの場合は簡単な作業ですが、LVMディスクを使用するコンテナーの適切なアプローチが何であるかはわかりません。

rsyncまたはscpを使用できることはわかっていますが、ssh/ftp/httpサーバーを設定せずにこれが可能かどうかを知りたいです。さらに、コンテナーの再起動が必要になるため、コンテナーの構成を変更せずにファイルを転送できると便利です。これらは潜在的なセキュリティリスクをもたらす可能性があるため、永続的にマウントされた共有フォルダーを回避することをお勧めします(簡単なマウント/アンマウントオプションを使用できるはずです)。

私の頭に浮かんだオプションは、ホストでWebDAVサーバーを使用してコンテナーにマウントすることですが、まだ分析していないため、パフォーマンスの低下についてはわかりません。私が考えている他のオプションは、ホストにLVMパーティションをマウントすることですが、これが安全かどうかはわかりません。

更新

私の構成では、次のコマンドを使用してコンテナーを作成しています。

lxc-create -t ubuntu -n "${NAME}" -B lvm --vgname lxc-vg --fssize "${SIZE}"

次の行を/var/lib/lxc/${NAME}/configファイルに追加することによって実現される自動開始機能を除いて、デフォルトの構成を使用しています。

lxc.start.auto = 1
lxc.start.delay = 0
6
s3v3n

改訂された回答:LXCコンテナーはホストと同じカーネルを共有するため、それらがマウントするファイルシステムはすべて外部からアクセスできる必要があります。

ホストでcat /proc/mountsを実行すると、コンテナファイルシステムが表示されますか?

/dev/mapper/... /var/lib/lxc/o1/rootfs ext4 ...のような行が表示された場合は、追加のコマンドを実行しなくても、ホストから/var/lib/lxc/o1/rootfsにアクセスできるはずです。

10
Tobia

私はこれが古い質問であることを知っていますが、ホストとコンテナの間でファイルをコピーする方法を検索している間にここにたどり着く人にとって、これは役立つかもしれません。

コンテナ「container-name」から現在のフォルダにファイル「my-file」をプルするには、次を使用します。

lxc file pull container-name/any-path/my-file .

「my-file」をプッシュするには、次を使用します。

lxc file Push my-file container-name/any-path/

フォルダ 'my-dir'を再帰的にプッシュするには、次を使用します。

lxc file Push -r my-dir container-name/any-path/
6
Ludwig

Hostからlxc-containerにデータを転送するためのより良い、何らかの方法で組み込みの方法は、以下のコードの4行目です。

1 $ mkdir /tmp/transferDir
2 $ cp <some files> /tmp/transferDir/<some files>
3 $ cd /tmp
4 $ tar -C transferDir -c . | lxc-attach -n <container_name> -- /bin/sh -c "tar -C /tmp/ -vx; chmod 1777 /tmp;"
5 $ rm -r /transferDir

chmod 1777 /tmpは重要です。それ以外の場合は、そのフォルダー(コンテナー/ tmp)のコピー権が変更された後、 これが頻繁に発生する xyz-sqlサーバーが再起動できないなどの問題が発生します。

4
flipcc