ます。https://docs.docker.com/engine/reference/builder/ Dockerfile説明パラメータ
指令の意味を説明します
FROM:DebianのFROM:ストレッチ表さDebianのベースイメージビルドとしてストレッチ
MAINTAINER:管理者情報
RUN:RUN行でこれらのスクリプトの実行&&によって接続されたいくつかのシェルコマンドは、そうすることがミラーの層の数を減らすことであるという事実の理由で見ることができ、各追加の線がミラーRUNを与えます追加の層は、ので、ここで層数を削減するために一緒にリンクされているすべてのコマンドを実行することを選択した
ARG:特にRUNコマンドの後半で説明します、いくつかのマクロ定義をすることができ、このコマンド、例えば、私は後に、ENV JAVA_HOME =は/ opt / JDKを定義しますRUNコマンド$ {JAVA_HOME}の後ろのシェルは、/ opt / JDKに置き換えられます
ENV:この効果は、命令がシェルでいくつかの環境変数(実際に輸出)を設定していることが分かる
... AS ... FROM:これはドッカー17.05で、個々の名前から上記の手順のうち、実際には、画像のこの段階に新しいバージョン:FROM ...(基础镜像) AS ...(别名)
その背後にある鏡のこの段階を参照するときに直接エイリアスを使用して
COPY :.、名前が意味する(現在のフォルダ、フォルダすなわちDockerfileを表す)がCOPY /ルート/ワークスペース/エージェント、前後にファイルをコピーするために使用されるファイルは、コンテナ/ルート/ワークスペース/にコピーされるように、現在のフォルダを示しますエージェントフォルダ。--fromパラメータはまた、--from =ビルダー比は、ファイルがローカル・ファイル・システムの源ではないことを示すが、ビルダーエイリアスコンテナ前として、ミラー・コピー・ファイルが前段から来るかもしれません
WORKDIR:行うRUN
第1の後側シェルコマンドの前であろうcd
にWORKDIR
、カタログの背面
ENTRYPOINT:このパラメータは、ミラーパッケージが完了した後、「[、またはによって実際にこのENTRYPOINT実行可能ファイル(通常はシェルスクリプトファイル)の後ろに実行されたドッキングウィンドウrunコマンドを使用してイメージをすることができます実行し、「ポータル」の画像を表し、作業ディレクトリの実装の入り口」WORKDIRの背後にあるディレクトリである 『これは、実行可能ファイルの実行パラメータへの道を与え、]』ファイル「」パラメータ1 『と』パラメータ2を実行
各コマンドは、詳細な
から
ベース画像の鏡像の新たな種類として指定され、例えば:
UbuntuのFROM:14.04
MAINTAINER
著者は、次のようなミラーとその電子メールを、示しています:
MAINTAINER vector4wang " [email protected] "
RUN
そのようないくつかのソフトウェアをインストールするようにミラー内に新しいコマンド実行では、いくつかの基本的な構成環境をラップするために、\を使用することができ、例えば:
RUNは、エコー「こんにちはドッカ!" \ > /usr/local/file.txt
フォーマットは、execを使用することができるRUN ["executable", "param1", "param2"]
ようなコマンドを、:
RUN [ " apt-getを"、" インストール"、" -y "、" nginxの" ]
なお、executable
パラメータparamが続き、コマンド
COPY
鏡の中のホストへファイルをコピーし、宛先が存在しない場合は、動作しませんドッカーは、自動的にすべての必要なディレクトリ構造を作成しますが、それは単純なコピーだとファイルを抽出し、解凍します。以下のような:
COPY application.ymlの/ etc / springboot /ハロー・サービス/ SRC /リソース
注:次のDockerfile同じディレクトリ内のファイル上に存在する必要がありますディレクトリをコピーする必要がある
理由:
ビルド環境がドッカーデーモンにアップロードされ、コピーがドッカーデーモンで行われているため。任意の建物に位置し、外部環境のものは使用できません。物体の位置のコピー指示は、容器内の絶対パスでなければなりません。
---「ドッキングウィンドウBOOK」
ADD
COPYのように、制限条件と使用パターンが同じで、ミラーにホストのファイルをコピーし、のような:
application.ymlの/ etc / springboot /ハロー・サービス/ SRC /リソースを追加
しかし、圧縮ファイル(タール、GZIP、BZIP2、など)を抽出し、解凍操作を行うを追加します。
EXPOSE
ランダムポートミラーリングの-Pパラメータの点で、ホストポートマッピングやって、ブートイメージ、用露光画像は、ポートマッピングをホスト行います。(Sを指定する)を使用します
EXPOSE 8080を EXPOSE 8081を ...
WORKDIR
イメージを構築する場合のコマンドは、この作業ディレクトリに基づいてされた後に、存在しない場合は、ディレクトリを作成し、ミラーリングの作業ディレクトリを指定します。として
WORKDIRは、/ usr / ローカル WORKDIRのWebサービス RUNのエコー ' こんにちはドッキングウィンドウ' > TEXT.TXT ...
最終的にはなります/usr/local/webservice/
、ディレクトリTEXT.TXT内のファイルを生成します
ONBUILD
コマンドは、(例えば、ソースコードに追加する準備ができてミラー位置に対するユーザのニーズとして、又はユーザは、ビルド環境から特定の画像ビルドスクリプトを実行する必要がある)、他のミラーのONBUILDベースイメージを含むようにミラーを用いた場合、コマンドそれが実行されます。
鏡像-Aを作成します
UbuntuのFROM ... ONBUILD ADD。/ var / WWWの ...
画像-Aのようなベース画像を、指定のように、鏡画像Bを作成します
イメージ- FROM
...
そして、画像-B構築、ログに表示されるが、以下:
ステップ0:イメージ- FROM Execting#1 ビルドがトリガー ステップonbuild - 0:ADD。/ var / WWWの ...
ユーザー
:など、ユーザーが実行する画像の種類を指定
USERのモンゴ
ボリューム
画像作成のためのボリュームベースのコンテナを追加します。たとえば、ホストを指定するには、データファイルに格納されているMongoDBの画像データを提出することができます。(容器の内部は、任意のデータを格納するために推奨されていない)
など。
VOLUME /データ/ DB /データ/てConfigDB
注意:VOLUME 主机目录 容器目录
CMD
:次のような、実行するコマンドの容器を起動すると
CMD / binに/ bashの
また、次のような、execの構文を使用することができます
CMD [ " / binに/ bashの" ]
複数のCMDがある場合、最後のものだけが動作します。
エントリーポイント
まったく同じ役割と使用方法とCMD
CMDとENTRYPOINTの違い
黒板をノック!!!非常に重要な
私たちが注意を払う必要があります!
我々は注意を払う必要があります!
我々は注意を払う必要があります!
コンテナは、以下の点の間の差を起動したときに実行するコマンドと同じCMDとENTRYPOINT:
- CMDコマンドはENTRYPOINTドッキングウィンドウは、コマンドを実行していない上書きされます
使用CMD ["/bin/bash"]
又はENTRYPOINT ["/bin/bash"]
再使用後にdocker run -ti image
容器を開始するには、それが自動的に使用されるように、容器対話型端末の内部に入ります
docker run -ti image /bin/bash
。
ミラーコマンドが起動した場合でもdocker run -ti image /bin/ps
、実行代わりによってカバーされるCMDコマンドの背中を使用bin/ps
コマンドを、そしてENTRYPOINTはありませんが、パラメータENTRYPOINTとしてコマンドを実行するために、実行コマンドの後ろにドッキングウィンドウます。
次の例で理解しやすく
するためにDockerfileを
... ENTRYPOINT [ " /ユーザー/ sbinに/ nginxの" ]
そして、後のビルドコンテナを開始することにより、
ドッキングウィンドウの実行-ti画像-g 「オフデーモン」
この時点で、-g "daemon off"
最終的には、コマンドになって、ENTRYPOINTにパラメータとして渡されます
/ユーザー/ sbinに/ nginxの-g " オフデーモン"
- CMDとENTRYPOINTが存在するとき
ときにそこENTRYPOINTとCMD、CMDコマンドENTRYPOINTへのパラメータ、およびこのパラメータはCMDは、カバードッキングウィンドウrunコマンドの後ろに設けられており、例えば:
... ENTRYPOINT [ " エコー"、" こんにちは"、" 私は" ] CMD [ " ドッキングウィンドウ" ]
後のコンテナの建設を開始した後、
-
使用
docker run -ti image
出力「こんにちは私は、ドッキングウィンドウです」
-
使用
docker run -ti image world
出力「こんにちは私は世界です」
コマンドの詳細は、(例えば始まるテーブルなど)のメモリの分類方法で行くことができます
例
ご自身は、非常に単純な簡単な例を書きました
UbuntuのFROM MAINTAINER vector4wang [email protected] WORKDIRは/ usr / local / ドッキングウィンドウの ADDの一時。ジップ ./add/ COPYの一時を。ジッパーは ./copy/ EXPOSE 22 RUNをgroupaddの -r vector4wang && useraddの-r - G vector4wang vector4wang ユーザーvector4wang ENTRYPOINT [ " / binに/ bashの" ]
ここでは、実行中のプロセスであり、
(ダイナミックマップは、アップロードするには大きすぎることはできません)
ファイルにコピーし、後の注意ユーザー名とログインを追加
追伸
これらは、ちょうどあなた自身のデモを書き込み、実際の戦闘の過程でいくつかの実用的な問題は、追加の部屋に遭遇した後、まとめブログを見て、他の人が閲覧しています。
リンクします。https://www.jianshu.com/p/10ed530766af