dockerfileコマンドの概要

から

指定されたベース画像に対して、それが最初の命令でなければなりません。

そうでない場合は任意のミラーベースで、その後、文言は次のとおりです。最初から。

次の命令は、第1のミラー層の開始として書き込まれると同時に手段で

構文:

FROM <画像> 
FROM <画像>:<タグ>
FROM <画像>:<ダイジェスト> 

書き込み、<タグ>と<ダイジェスト>の三種類を選択しない場合、デフォルト値は、最新のオプションです

RUN

 関数は、指定されたコマンドを実行します

RUNコマンドは、次の2つの形式を取ります

1. RUN <コマンド> 
2. RUN [ "実行"、 "PARAM1"、 "PARAM2"]

シェルの背後にあるとの最初の直接順

  • Linuxオペレーティングシステムのデフォルトの/ binに/のsh -c

  • デフォルトのCMD / S / CのWindowsオペレーティングシステムで

第二は、関数呼び出しに似ています。

実行可能ファイルは、それが二つのパラメータの後ろにある、実行可能ファイルとして理解することができます。

どちらのバージョンの比較:

  • RUN / binに/ bashの-c「ソースの$ HOME / .bashrcに。エコー$ HOME
  • RUN [ "/ binに/ bashの"、 "-c"、 "エコーこんにちは"]

注:各命令は、1つのDockerfileに確立されますので、より多くの複数行を書いていないが、RUNコマンド。

 ミラーを構築するために実行どのように多くの、ミラーが肥大化し、多層の原因になりますどのように多くの層、時間コンポーネントの展開を増加させるだけでなく、エラーを起こしやすいだけではなく。

書き込みがあるRUN改行\

CMD

実行するために、コンテナの開始のためのコマンド機能

3つの書かれた文法があります。

1. CMD [ "実行"、 "PARAM1"、 "PARAM2"] 
2 CMD [ "PARAM1"、 "PARAM2"]
3. CMDコマンドPARAM1 PARAM2

第三は、より良い、このようおよび書き込みをシェルするとき、それが実行され、理解されています

第一および第二の実際の形式のパラメータを使用して実行可能ファイルであります

2つの方法を示しています。

  • CMD [ "SH"、 "-c"、 "エコー$ HOME" 
  • CMD [ "エコー"、 "$ HOMEの"]

その他の詳細は:こちら側「は、単一引用符は、単一引用符で書かれてはならないされていないパラメータを含む二重引用符を使用する必要があります。

その理由は、送信パラメータは、ドッカーは、JSON配列を解析することです

RUN&CMD

CMDを実行し、混同しないでください。

RUNコマンドが実行され、コンテナのメンバーが操作する結果を提出します

CMDは、コンテナが起動し実行するコマンドで、コンポーネントで実行されない、する場合、それはどのようなものであるか最終的には、このコマンドコンポーネントしっかり指定します

ラベル

この関数は、ミラーのラベルを指定することです

構文:

LABEL <キー> = <値> <キー> = <値> <キー> = <値> ...

 以下のように、LABEL Dockerfile種類を複数持つことができます。

LABEL "com.example.vendor" = "ACME株式会社" 
LABELのcom.example.label-と値= "foo"という
LABELバージョン= "1.0"
LABELの説明= "このテキストは、\示して
そのラベル値を複数行にまたがることができます。 "

 しかし、私はこの書き込みをお勧めしません、それはそのような行を変更する必要として、行を記述することが最善である長すぎる、その後、\記号を使用

次のとおりです。

LABEL multi.label1 = "VALUE1" \ 
multi.label2 = "value2の" \
その他= "値3" 

説明:ラベルは、このような同じキーに遭遇するように、ベース画像種ラベルを継承する、値をオーバーライド

MAINTAINER

著者を指定します。

構文:

MAINTAINER <名前>

EXPOSE

容器の外側に動作して雨水管としてポート機能に聞きます

しかし、コンテナ港へのアクセスホストを作成しませんEXPOSE

あなたは、コンテナとホストポートのマッピング関係を作りたい場合は、血管が始まったとき、-Pパラメータを追加する必要があります

ENV

環境変数を設定する機能

2つの文法があります。

1. ENV <キー> <値> 
2. ENV <キー> = <値> ...

違いは、最初のものがより設定された第2の設定時間であるということです

 追加

 シーンにファイルをコピーするコピーコマンド。

仮想マシンコンテナは2台のLinuxサーバーを想像している場合、このコマンドは、SCPに似て、SCPはちょうどしかしADDなしに、ユーザー名とパスワードの認証に権限を追加する必要があります。

構文は次のとおりです。

1. ADD <SRC> ... <DEST> 
2. ADD [ "<SRC>"、... "<DEST>"]

フィル<DEST>パスは、容器内の絶対することができる作業ディレクトリへの相対パスであってもよいです

<Srcの>ローカルファイルまたはローカル・アーカイブすることができ、それはまた、URLを指定できます

<SRC> URLを書き込んだ場合は、ADDコマンドは、wgetのに似ています

次のバージョンのように考えられます。

  • ADDテストrelativeDir / 
  • ADDテスト/ relativeDir
  • ADD http://example.com/foobar /

<SCR>フォルダ内に書かないようにしてください、<SRC>フォルダで、ファイルシステムのメタデータを含むディレクトリ全体の内容を、コピーした場合

COPY

知るためにこの名前を見て、だけでなく、コピーコマンド

構文は次のとおりです。

<SRC> ... <DEST> 1. COPY 
2. COPY [ "<SRC>"、... "<DEST>"]

ADDの違い

<SRC>のCOPYは、他の用途に合わせて、ローカルファイルとすることができます

エントリーポイント

機能は、起動時のデフォルトのコマンドです

構文は次のとおりです。

1 ENTRYPOINT [ "実行"、 "PARAM1"、 "PARAM2"] 
2エントリポイントコマンドPARAM1 PARAM2

あなたは上から下までここを参照してください場合は、これら二人の友人の構文を理解する必要があります。

第二は、シェルを書くことです

最初は、実行ファイルの追加のパラメータであります

そして、CMD比較ショー(多分あまりにも多くのコマンドのように、だけでなく、組み合わせて使用​​することができます):

1.同じポイント:

  • あなたが複数、有効にするそして最後のものだけを書いた場合にのみ、1書き込み

  • コンテナ起動して実行すると、同じ機会を実行しています

2.異なる点:

  •  ENTRYPOINTは、運用コマンドの対象となりませんし、CMDをカバーされます

  •  我々はまた、Dockerfile種にENTRYPOINTとCMDを書き、CMDコマンドが完了し、実行コマンドでない場合、CMDは、コンテンツのパラメータENTRYPOINTとして指定されます

次のとおりです。

UbuntuのFROM 
ENTRYPOINT [ "上部"、 "-B"]
CMD [ "-c"]
  • 我々はまた、DockerfileがENTRYPOINTとCMDを植え書き、CMDは完全なコマンドであれば、彼らは二人は最終的に有効にするには、誰が誰であるかお互いをカバーします

次のとおりです。

UbuntuのFROM 
ENTRYPOINT [ "トップ"、 "-b"]
CMDのls -al

これは、トップ-bは実行されません、-al LSを実行します。

ボリューム 

マウント機能を実現することができる、本土のフォルダは、コンテナまたはこのフォルダのコンテナ種にハングアップする必要があり、他の種類のことができます

構文は次のとおりです。

VOLUME [ "/データ"]  

説明:

   [「/データ」]は複数の値であってもよい、JsonArrayであってもよいです。だから、いくつかのバージョンが正しいされています

VOLUME [ "は/ var / log /"]
VOLUMEは/ var / log
VOLUMEは/ var /ログは/ var /デシベル

シーンは、一般的に、データの永続的に保存するために使用された場合

AUFSを使用したコンテナは、この種のデータファイルシステムは、コンテナが閉じているときに、すべての変更は失われます、持続することはできません。

データを永続化する必要があるときにそのため、このコマンドを使用します。 

ユーザー

設定されたユーザーが開始したコンテナは、書かれただけで、次の二つが正しいされ、その結果、ユーザー名やUIDかもしれ

  • USERのdaemo
  • USER UID

注:あなたが実行するために、ユーザデーモンにコンテナを設定した場合、RUN、CMDとENTRYPOINTは、ユーザーに実行して行くだろう

WORKDIR

構文:

WORKDIR /パス/に/ WORKDIR

作業ディレクトリ、RUN、CMD、ENTRYPOINT、COPY、ADDの発効を設定します。そこに作成されている場合は、複数回設定することができます。

以下のような:

WORKDIR / 
B WORKDIR
WORKDIR C
RUN PWD

実行のPWD結果が/ A / B / C 

WORKDIR環境変数を解決することができます

以下のような:

ENV DIRPATH /パス
WORKDIR $ DIRPATH / $ DIRNAME
RUN PWD

/パス/ $ DIRNAMEがあるpwdの結果

ARG

構文:

ARG <名前> [= <デフォルト値>]

設定された変数のコマンド、ARGコマンドは、変数を定義し、--build-argに<VARNAME> = <value>を使用した場合、ビルドは、ミラーリングドッキングウィンドウを作成するパラメータを指定します

ユーザーは、ビルドDockerfile種鏡で定義されていないパラメータを指定する場合は、警告があるだろう

次のようにヒントがあります:

[警告]一つ以上のビルド引数[FOO]は消費されませんでした。

次のように私たちは、1つ以上のパラメータを定義することができます。

busyboxのFROM 
ARG user1の
ARG buildno
...

また、パラメータにデフォルト値を指定できます。

busyboxのFROM 
ARG USER1 = someuser
ARG buildno = 1
...

私たちは、パラメータのデフォルト値のARGの定義を与える場合は、ビルドイメージは、デフォルト値を使用しますと、そのパラメータの値が指定されていません

ONBUILD

構文:

ONBUILD [命令]

このコマンドは、現在のサブミラー像に有効になります。

カレントミラー等を添加Dockerfile種において、Aです。

ONBUILD RUNのLS -al

時間は、ミラーAのLS -alコマンドで起動したり、ビルドしません

このとき、鏡像BがAに基づいて構築されているがあり、そのコマンドが実行され、LS -Al B場合、ミラー構造。

ストップライト

構文:

STOPSIGNAL信号

STOPSIGNALコマンドの役割コンテナは、コマンド送信のどのようなシステムに導入されたとき

健康診断

 コンテナのヘルスチェックコマンド

2つの構文があります。

1.ヘルス[オプション] CMDコマンド
2.ヘルス・NONE

最初の関数は、コンテナの健康状態をチェックするためにコンテナ内のコマンドを実行することです

第二の機能は、ミラーにおけるヘルスチェックに基づいて注文をキャンセルすることです

[OPTIONS]オプションは、次の3つのオプションをサポートしています。

    --interval = DURATIONをチェック倍、デフォルトの時間間隔は30秒です

    --timeout = DURATIONコマンドは、ヘルスチェックタイムアウト時間を実行し、30秒のデフォルト

    --retries = N回の連続数が故障の後に指定するときは、容器が不健康不健康な状態であると考えられ、デフォルトは3回です   

注意:

ヘルス・チェック・コマンドは数回があった場合は、最後のものだけが動作する、一度表示されます。

このヘルスチェックの決定の背後にあるCMDコマンドの戻り値が成功し、次のように、特定の戻り値は次のとおりです。

0:成功 - コンテナを表し、健康です

1:不健全 - コンテナが仕事にできなかった表し

2:予約済み - 保持

例:

ヘルス--interval = 5メートル--timeout = 3S \ 
CMDカール-fます。http:// localhost /を|| 1番出口

ヘルスチェックコマンドは次のとおりです。カール-fます。http:// localhost /を|| 1番出口

二つの検査間隔は5秒です

コマンドのタイムアウト時間は3秒です

おすすめ

転載: www.cnblogs.com/liujunjun/p/12118544.html