Dockerfileドッカーイメージがビルドファイルを構築するために使用され、スクリプトがコマンドと設定パラメータのシリーズです。
例えばCentOSのに(https://hub.docker.com/_/centos):
FROM 7:CentOSの ENVのコンテナのドッキングウィンドウの RUN ; I中のため*;やる[$ I == \(CDの/lib/systemd/system/sysinit.target.wants/ にsystemd-TMPFILES-setup.service] || RM -f $やりました); \ RM -f /lib/systemd/system/multi-user.target.wants / * ; \ RM -fは/ etc / systemdに/システム/ *望んでいる/ *; \ RM -f / libに/にsystemd /システム/ローカル-fs.target.wants / *; \ RM -f /lib/systemd/system/sockets.target.wants/*udev*。\ RM -f /lib/systemd/system/sockets.target.wants/*initctl*。\ RM -f /lib/systemd/system/basic.target.wants / *; \ RM -f /lib/systemd/system/anaconda.target.wants/*。 ボリューム[ "/ SYS / FS / cgroup内"] CMD [ "は/ usr / sbinに/ INIT"]
、Dockerfileはじめに
1.基本
- 各命令は大文字で予約語とフォローするために、少なくとも1つのパラメータが続かなければなりません
- 命令は、トップダウンの順序で実行されます
- #はコメントを示します
- 各コマンドは、新しいイメージレイヤを作成し、ミラーコミットします
実質的DockerFileの流れを実行2.Docker
- 容器ベースイメージからドッキングウィンドウの実行
- 命令を実行し、コンテナの変更を行います
- ドッカーコミット操作は、新しいイメージレイヤを提出することと類似に行われます
- ドッキングウィンドウを再びベースのミラーリングの実行は、単に新しいコンテナを提出しました
- 次の命令の実行Dockerfileすべての命令が完了するまで実行
3.DockerFileアーキテクチャ(予約語命令)
FROM:現在の新しいイメージベースのミラーベースイメージ、 擁護者の名前とメールアドレスのミラーリング:MAINTAINER RUNを:構築する際に必要とされるコマンドを実行し、コンテナ 外部現在のコンテナ港が露出:EXPOSE あなたが指定したコンテナターミナルを作成した後:WORKDIRを入ってくる作業ディレクトリログインデフォルトでは、足場の ENV:ミラーを構築するために使用されるプロセスは、環境変数を設定 ADD:ディレクトリイメージのホストファイルをし、ADDコマンド処理URLにコピーされ、自動的にtarアーカイブの解凍 コピー:同様のADDを、ミラーにファイルやディレクトリをコピーします。(COPYのsrc DESTまたはCOPY [「SRC」は、「DEST」は]) VOLUME:データストレージおよび永続作業用コンテナボリュームデータ、 CMD:実行を開始するコンテナ指定されたコマンドは、Dockerfile CMDは、複数の命令を有することができますしかし、最後のものだけではCMDは、パラメータファイル名を指定して実行ドッカー後に交換され、動作する コンテナが実行を開始し、指定されたコマンド、ENTRYPOINT目的とCMD、指定されたコンテナ内にあり、プログラムパラメータを起動します。エントリーポイント ONBUILD:建物があるときミラーのキルトは、父親のonbuildを継承した後にコマンドを実行しますDockerfile継承、親が鏡にトリガされ
第二に、カスタムイメージ
ドッカーハブは、画像の99%などの、インストールと実行ソフトウェアビルドミラーベースを構成することにより、必要とされる:ゼロから、CentOSのFROM
1.カスタムCentOSの
作るあなた自身のミラーが含まれています:着陸後のデフォルト・パスは、Vimエディタを、ネットワーク構成のifconfigコマンドのサポートを表示
dockerfileファイル
FROM CentOSの MAINTAINER jhxxb ENV MYPATHは/ usr / local WORKDIR $ MYPATH RUN yumをVimのインストール-y RUNをyumのネットツールがインストール-y EXPOSE 80 CMD エコー$ MYPATH CMDは「成功をエコー------------- -ok」 CMD / binに/ bashの
実行の構築
#は、現在のパスことを示し ドッカービルド -f -t mycentos mydockerfile:0.1。
必要な機能をサポートしていることを確認します
表示画像の変更履歴
ドッキングウィンドウ履歴mycentos:0.1
2.CMDとENTRYPOINT
Dockerfileは、複数のCMDコマンドを持つことができますが、最後のものだけが動作するには、CMDパラメータは、ドッキングウィンドウの実行後に置き換えられます。
dockerfileファイル
FROM CentOSの RUN のyum -yカールインストール CMD [ "カール"、 "-s"、 "https://ip.cnを"]
私たちは、HTTPヘッダー情報を表示したい場合は、-iオプションが、間違っていることが、そのような引数を実行するコマンドを追加する必要があります。
ミラー名の後ろにコマンドですので、それはデフォルト値のCMDランタイムに置き換えられます。したがって、ここで-iは、元のCMDを交換し、元のカール-s https://ip.cn後に追加されません。-iコマンドではないので、自然に見つけることができません。
ドッキングウィンドウは、-f -t mydockerfile MYIPを構築:0.1 。 ドッキングウィンドウを実行MYIP:0.1 -i
解決策は2つあります
完全なコマンドを入力します。
ドッキングウィンドウの実行MYIP:0.1カール-sます。https:// ip.cn -i
0.1 -i実行:あなたは直接ドッキングウィンドウの実行MYIPを使用できるように、ENTRYPOINTビルドを使用します
FROM CentOSの RUN のyum -yカールインストール ENTRYPOINT [ "カール"、 "-s"、 "https://ip.cnを"]
3.カスタムミラーTomcat9
環境の準備
dockerfileファイル
FROM CentOSの 上のMAINTAINER jhxxb jdk1へ#。カレントディレクトリのホストの下に 8 コンテナは/ usr / local /パスにコピー.0_221 COPY jdk1.8.0_221 / /usr/local/jdk1.8 .0_221 / ホストへ#カレントディレクトリTomcatはは/ usr / local /パスの下に容器に加え ADDのApache-Tomcatの-9.0.24 .tar.gzのは/ usr / local / マウント#1のvimエディタ RUNをvimの-Yインストールyumの #をアクセス時間の設定作業WORKDIRの、パスをログインは足場 ENV MYPATHは/ usr / local WORKDIRの$のMYPATHの #のJavaとTomcatの設定環境変数 ENV JAVA_HOMEが/usr/local/jdk1.8 .0_221 ENVを$ JAVA_HOME / lib / tools.jarを:CLASSPATH $ JAVA_HOME / libに/ dt.jar ENV/Usr/local/apache-tomcat-9.0.24 CATALINA_HOME ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.24 ENV PATHは、PATHを$:$のJAVA_HOME / binにします。$ CATALINA_HOME / libに:$ CATALINA_HOME / binに #ランタイムコンテナポートがリスニング EXPOSE 8080 #開始時間をTomcatの実行している #エントリポイント [ "/usr/local/apache-tomcat-9.0.24/bin/startup.sh" ] CMDを [「/usr/local/apache-tomcat-9.0.24/ビン/ catalina.sh "" RUN " ] #CMD /usr/local/apache-tomcat-9.0.24/bin/startup.sh &&は、tail -f /usr/local/apache-tomcat-9.0.24/bin/ログ/ catalina.out
ビルドリソースディレクトリで
ドッキングウィンドウは、-f -t mydockerfile mytomcatを構築:0.1。
効果を確認するために実行します
ドッキングウィンドウの実行は、-p -d 9080:8080 --name myt9 -vを/ tmp / tomcat9logs /:/ apacheの-tomcat-は/ usr / local 9.0。24 /ログは= --privileged 真 mytomcatを:0.1