2015-10-03 8 views
5

Dockerイメージを作成し、Dockerファイルなしでそれらをハブにプッシュすることができます。 Dockerfileを持っているのはなぜ便利なのですか?それの利点は何ですか?ドッカーファイルの作成は時間の消費が高く、人間だけが作成できるプロセスです。 基本イメージベースイメージ、Dockerfileベースイメージの主な違いは何ですか?Dockerファイルのメリット

+0

[Dockerfile or Registry?どちらが配布のための優先戦略ですか?](http://stackoverflow.com/questions/18029045/dockerfile-or-registry-which-is-the-preferred-strategy-for-distribution) –

答えて

3

Dockerfileは、作業の自動化に使用され、ドッカー画像に必要なすべてのステップを指定します。

Dockerfileは、ユーザー がイメージをアセンブルするためにコマンドラインで呼び出すことができるすべてのコマンドを含むテキストドキュメントです。ドッカーを使用して ビルドユーザーは、いくつかの コマンドライン命令を連続して実行する自動ビルドを作成できます。

はい、Dockerイメージを作成できますが、変更するたびに手動で変更してテストしてプッシュする必要があります。

またはdockerhubでDockerfileを使用すると、自動的に再構築され、すべての変更時に変更が加えられます。間違っていると再構築が失敗します。 Dockerfileの

利点

  • Dockerfileであるあなたは、あなたがすべてのための画像を作成する必要が異なるOSの風味に同じ設定をテストしたい場合は、手動画像の作成が複雑になります
  • ドッカー画像の自動スクリプトフレーバーではありませんが、ドッカーファイルを少し変更することで、さまざまなフレーバー用のイメージを作成できます。
  • イメージ用の単純な構文があり、多くの変更が自動的に行われます。
  • ドッカーファイルには、他の人が簡単に理解できる体系的なステップがあり、ベースイメージでどのような正確な設定が変更されたかを簡単に知ることができます。 dockerhub

    • ドッカーハブとDockerfileの

    利点はDockerfileのためのプライベートリポジトリを提供します。

  • Dockerfileはチームと組織の間で共有できます。
  • 自動画像は、画像または更新画像がリポジトリにプッシュされたときにイベントをトリガすることができ、あなたのリポジトリに接続されている
  • ウェブフックを構築
  • 我々はGithubまたはBitbucket
にDockerfileを置くことができますコミットされた画像とDockerfile画像

コミット画像

差:それコンテナのファイルの変更や設定を新しいイメージにコミットする。

Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 
Create a new image from a container's changes 

    -a, --author=  Author (e.g., "John Hannibal Smith <[email protected]>") 
    -c, --change=[]  Apply Dockerfile instruction to the created image 
    --help=false  Print usage 
    -m, --message=  Commit message 
    -p, --pause=true Pause container during commit 

それは別のimage.butドッキングウィンドウに設定変更デバッグコンテナと輸出に良いオプションですsee here dockerfile使用することをお勧めまたは我々はコミットすると言うことができ、画像のドッキングウィンドウまたはバックアップのバージョン管理です。

コミット操作には、ボリューム がコンテナ内にマウントされているデータは含まれません。

はデフォルトでは、コンテナがコミットされ、そのプロセスは、画像がコミットされている間 が一時停止になります。これにより、 コミットの作成中にデータが破損する可能性が低くなります。この動作が望ましくない場合は、 'p'オプションをfalseに設定します。それは常に新しいイメージを作成するためのベースイメージを使用し

Dockerfileベースの画像。ドッカーファイルを変更した場合は、新しいイメージにすべてのドッカーファイルステップを適用し、新しいイメージを作成します。コミットは同じイメージを使用します。

私の考えでは、イメージ上にすべてのステップが必要なdockerfileを使用する必要がありますが、コミットからイメージを作成すると、新しいイメージを作成する場合に必要なすべての変更を文書化する必要がありますdockerfileはイメージのドキュメントであると言えるでしょう。

+0

**質問**:イメージの新しいバージョンをDocker Hubにプッシュすると、その変更を反映するために 'Dockerfile'を書き直すべきですか?私の懸念は、誰かがGithubのリポジトリから 'Dockerfile'を引っ張っても、最新バージョンのイメージが得られていない可能性があります。 – chipoglesby

2

イメージをプッシュできる共有イメージレジストリを持っていなくても、そのイメージを「レシピ」(Dockerfile used by docker build)で交換することができます。テキストは非常に簡単に(軽くて小さく)渡すことができます。

この宣言形式では、同じイメージを再構築できるようになり、再現性のある結果が得られます。

+1

VonCに追加: Dockerfileを使うと、取得した内容を検証することができます(拡張することもできます)。 ドッカーハブにあるすべての画像を信頼するべきではありません。 – christian

0

ドッカーはドッカーは、新しいイメージを作成するには、コマンドアプローチをコミット使用

をコミットし、覚えていて、更新した画像を小さな変化のために、すべての時間をコミットする一つの必要性エラーが発生しやすくなります。

Dockerfile

  • Dockerfile画像のコミットに伴って最終画像を作成する(ドッカービルドコマンドを参照)ビルド時に実行されます指令の組 ですべての手順を自動化する能力を提供します。

  • Dockerfileはすべてが設定されたアプローチを実行する準備ができて、どこでも使用することです。

  • Dockerfileは、他の人と共有し、他の人が簡単に更新することができます。それは は簡単に要件に応じて簡単に画像を変更することができます セキュリティ強化、ユーザーの詳細の追加や更新など

関連する問題