web-dev-qa-db-ja.com

LinuxでGUIアプリケーションのDockerイメージを作成する

現在、私はLinux用のGUIアプリケーションを構築しており、それらには多くの依存関係があります(各デバイスに実行可能ファイルがインストールされたRaspberry Piデバイスを出荷しています)。私の考えは、各デバイスにすべての依存関係をインストールしてからアプリケーションをインストールするのではなく、実行可能ファイルのDockerイメージを作成し、すべてのデバイスにイメージをコピーすることです(このプロセスには約6時間かかります)。この方法でアプリケーションにアップデートを配布するのは簡単だと思います(Dockerハブに更新されたイメージをデプロイする)。

コンテナーからGUIアプリケーションを実行したいのですが、GUIアプリケーションを通常の方法(ダブルクリックで.....)で起動する方法はありますか?

これが私が達成したいことへの正しいアプローチであるかどうか知りたいのですが?これが適切なアプローチでない場合は、他の推奨事項を聞きたいと思います。

編集:質問に反対票を投じている人は、コメントに反対票を投じた理由を述べてください。

1
pruthvidr

このアプローチには2つの大きな欠点があります。

  1. Raspberry Piは、仮想マシンやコンテナーを考慮して実際に行われるわけではありません。特にRaspberry Piの目標は、サーバーとの差別化です。サーバーは(1)高価、(2)仮想マシン(またはコンテナー)に割り当てるリソースが多く、(3)仮想化用に最適化されたハードウェアを備えていますが、Raspberry Piデバイスは安価であり、アプリケーションを最低限に実行することを目的としています。

    コンテナーまたは仮想マシンを実行することも可能です。しかし、それは仕事に適したツールではありません。

  2. コンテナーは、GUIアプリケーションに適したツールではありません。

    ここでも、それを行うことが可能かもしれません。マイクロソフトは、仮想マシン上でGUIアプリケーションを10年近く実行しています。しかし、多くの人が主題に興味を持っているわけではないので、広範なドキュメントや「5分で簡単にできる」チュートリアルを期待しないでください。

あなたの問題はアプリケーションのbuild(依存関係のインストールを含む)にかかる時間のようですので、サーバーでビルドを実行してから、ファイルをそれぞれにコピーすることをお勧めしますラズベリーパイ。

ビルドが特定のディレクトリまたはディレクトリの限られたセットにのみ影響を与える場合、これは簡単で簡単なはずです。

依存関係の影響を受けるものがわからない場合は、 LVMスナップショット を確認することをお勧めします。より具体的には、あるマシンのスナップショットを別のマシンに適用できるかどうかを検索することです。増分バックアップは、別の(おそらく簡単な)ソリューションになる可能性があります。つまり、ビルドごとに、Raspberry Piデバイスで復元する仮想マシンの増分バックアップを作成します。

1