2016-08-12 8 views
0

私はユーザーにアプリケーションを提供する立場にありますが、かなりの数のプログラムとコンポーネントがインストールされている必要があります。私が考えている方法の1つは、VMまたはDockerイメージを提供することです。この考え方では、配送可能物はイメージであり、ユーザーは理想的にはドッカーイメージをダブルクリックし、便利なフロントエンドを示すWebインターフェイスをポップアップするだけです。 (この場合は、私が開発しているPythonスクリプトとの対話を可能にするためにJupyterを実行すると想像しています。)しかし、私はまだDockerがどのように動作するか混乱しています。ダブルクリック可能なイメージを送信できるのではなく、docker pull ..を実行しなければならないと思われます。それは...たくさんのものをダウンロードし、どこかにインストールします。次に、コマンドを実行する必要がありますdocker run ...ウェブインターフェイスを使用したクリックアンドドッキングのドッカー画像(またはVM)?

Dockerまたは類似のVMソリューションに対して、よりシンプルで、ファイル指向のインターフェイスがありますか?そんな奇妙なやり方で物事を管理しなければならないのはなぜですか?

(それは現在、非常に優れたWindowsとMacのサポートがあり、その画像は私が理解から、VMイメージよりもかなり小さくすることができるので、私はドッカーを好む。)

編集:「奇妙な方法」とは、私が意味するのは、私には明らかなのは、ファイルmy-docker-thing.imageをダウンロードして、docker run my-docker-thing.imageのように実行するということです。代わりに単一のdocker pullはのファイルをたくさん入れて、..*ImageBlob*という名前のハードドライブをすぐにいっぱいにしているようで、実際に何が起こっているのか分かりません。私は、これらのファイルには画像に合成できる「ピース」が含まれていると仮定していますが、これを単一のファイルで表現する方法はありますか?

答えて

1

はい、Dockerイメージを単純なTARファイルとしてインポートしてエクスポートできます。

docker save your_image > your_image.tar 

この方法で作成したTARファイルは自己完結型であり、あなたはそれをあなたが好きなように配布することができます。tarファイルに既存のイメージをエクスポートするには、以下のdocker saveコマンドを使用します。別のホスト(すでにインストールドッカーエンジンで)、あなたはdocker loadコマンドを使用して、TARファイルをインポートすることができます(その後docker runでそれを起動する)上:

docker load < your_image.tar 
docker run your_image 

いくつかの背景ノート(あなたがしましたので、 Dockerが画像と一緒に動作する理由を尋ねました):

レイヤーファイルシステムにより、Dockerはディスクスペースとコンテナの作成時間の点で非常に効率的に画像とコンテナを扱うことができます。たとえば、すべて共通のベースイメージ(たとえば、ubuntu:16.04イメージなど)上に構築された複数のローカルイメージがあるとします。レイヤーファイルシステムはこれを認識し、docker pullを実行するとを一度だけベースイメージをダウンロードします。

エクスポートされたイメージファイルを使用すると、ファイルとして保存されたイメージには、イメージが構築されているすべてのファイルシステムレイヤが常に含まれるため、この利点がありません。たとえば、200MBのベースイメージと10MBのカスタムアプリケーションデータを扱う例を考えてみましょう(アプリケーションの新しいバージョンをリリースするときに頻繁に変更されます)。 docker savedocker loadを使用すると、アプリケーションの各ビルドに配布する必要がある新しい210MBサイズのtarballが常に生成されます。 docker pushdocker pullを集中レジストリと共に使用する場合は、10MBの変更されたイメージレイヤーのみをレジストリとの間で転送する必要があります。

+0

優秀、ありがとうございます!私はまだこの機能を見逃していませんでした。私はそれを試してみる、素晴らしい音。 – Steve

1

Dockerコンテナを実行するには、Dockerエンジンが必要です。顧客がホスト上でコンテナを実行したい場合、ドッカーをインストールする必要があります。

クイック例: あなたの1つの構成要素は、nginxのです:

あなた以上により
docker pull ngnix:latest 
docker run --name webInterface --host web -it ngnix:latest 

は、コンテナを作成し、準備ができたら、あなたの顧客のマシンにインストールすることができます。

特定の環境にドッカーを使用する場合は、ボリュームをマウントしてドッカー(コンパイルまたはその他のもの)で作業し、結果をマウントしたボリュームに入れて、システムを使用して毎回同じ結果を保証する

+0

ええ、最初にDockerをインストールする必要はありません。私が理解していないのは、ドッカーがそれをやっていることです。つまり、中央のある場所からイメージファイルをダウンロードしていますが、サーバー以外の指向のインターフェイスがありますか?どういうわけか、完全なイメージを「圧縮」できますか? – Steve

+0

はい@helmbertはそれに答えました:) – CMPS

関連する問題