以前、プロジェクトを迅速にデプロイするために Docker について簡単に学習したことがあります。プロセスは非常に速く進みましたが、Dockerfile ファイルの記述には多少慣れていませんでした。 そこでこの記事を書きました。これが皆さんのお役に立てれば幸いです! ! ! 1. Dockerfile とは何ですか?コンセプト: Dockerfile は、Docker イメージをビルドするために使用されるビルド ファイルです。一連のコマンドとパラメータで構成されるスクリプトです。 構築するには 3 つの手順が必要です。
Centos の例: CentOS の例: ゼロから #実際のベースイメージ、 centos-7-x86_64-docker.tar.xz を追加します / # ラベルの説明 LABEL \ org.label-schema.schema-version="1.0" \ org.label-schema.name="CentOS ベースイメージ" \ org.label-schema.vendor="CentOS" \ org.label-schema.license="GPLv2" \ org.label-schema.build-date="20201113" \ org.opencontainers.image.title="CentOS ベースイメージ" \ org.opencontainers.image.vendor="CentOS" \ org.opencontainers.image.licenses="GPL-2.0のみ" \ org.opencontainers.image.created="2020-11-13 00:00:00+00:00" CMD ["/bin/bash"] #最後の行で実行されたコマンド どこで見つけたのでしょうか? hub.docker.com の centos で見つけました。 やり方は分かりませんが、まずは他の人の書き方を見てみることはできます。宿題をコピーすることは誰でもよく知っていると思います。一般的にCV法として知られています😂。 2. Dockerfile構築プロセスの分析はじめる: 各予約語ディレクティブ (今日の投稿の焦点) は のように: ゼロから #実際のベースイメージ、 centos-7-x86_64-docker.tar.xz を追加します / 命令は上から下へ順番に実行されます。
各命令は新しいイメージ レイヤーを作成し、イメージをコミットします。 以下のように、入れ子人形のように作ることもできます。 Dockerfile実行プロセス分析:
本文の後半に事例が出てきますので、事例と合わせて振り返ると理解しやすくなります。 ちょっとした追加情報:
Docker コンテナは実行後すぐにサービスを提供できます。 3. Dockerfileの予約語の指示Dockerfiel の予約語の指示は次のとおりです。
3.1 からベース イメージ、つまり、現在の新しいイメージが作成されるベースとなるイメージ。 #openjdk:8 に基づいてイメージを作成する FROM openjdk:8 3.2 メンテナーイメージ管理者の名前とメールアドレス メンテナー Ning Zaichun [email protected] 3.3 実行コンテナを構築するときに実行する手順 mkdir -p /conf/my.cn を実行します。 3.4 公開する現在のコンテナによって公開されているポート #MyCat の必要なポートを公開します EXPOSE 8066 9066 3.5 ワークディレクトリコンテナを作成した後にログインするターミナルのデフォルトの作業ディレクトリを指定します #コンテナデータボリューム。データ保存と永続化作業に使用されます。WORKDIR /usr/local/mycat 3.6 環境イメージ構築中に環境変数を設定するために使用します #イメージ構築プロセス中に環境変数 ENV MYCAT_HOME=/usr/local/mycat を設定するために使用されます この環境変数は、コマンドの前に環境変数プレフィックスが指定された場合と同様に、後続の RUN 命令で使用できます。また、これらの環境変数は他の命令でも直接使用できます。 のように: $MYCAT_HOME/mycat を実行します。 3.7. 追加とコピー追加: ホスト ディレクトリ内のファイルをイメージにコピーすると、ADD コマンドによって URL が自動的に処理され、tarball が解凍されます。 centos-6-docker.tar.xz を追加します / コピー: ADD と同様に、ファイルとディレクトリをイメージにコピーします。 ビルドコンテキストディレクトリの<ソースパス>からイメージの新しいレイヤーの<ターゲットパス>の場所にファイル/ディレクトリをコピーします。 コピー src dest コピー ["src" "dest"] 3.8 ボリュームコンテナ データ ボリュームは、データの永続性と保存に使用されます。 #mycat設定ファイルアドレスのマッピングアドレスを公開し、起動時にホストフォルダVOLUME /usr/local/mycatを直接マッピングします。 3.9 CMDとENTRYPOINTCMDF CMD コマンドは RUN コマンドに似ており、次の 2 つの形式があります。
エントリーポイント コンテナの起動時に実行するコマンドを指定します。 ENTRYPOINT の目的は CMD と同じで、コンテナの起動プログラムとパラメータを指定することです。 違い: 違いを簡単に説明します。CMDは上書きとして理解できます。 コマンド cat /conf/my.cnfCMD /bin/bash これらの命令は両方とも これは主に 3.10 オンビルド継承された 4. 実際の戦闘事例4.1. 独自の CentOS イメージを作成する4.1.1、はじめに:まず Alibaba Cloud から CentOS を取得して、どのような問題があるかを確認し、その後カスタマイズしてみましょう。 docker pull centos # イメージをプルする docker run -it centos # イメージを実行する # ===== テスト ====vim ceshi.txtifconfig pwd なぜそうなるのでしょうか? Docker リポジトリ内の Centos は簡素化されたバージョンであり、カーネルのみが含まれており、他には何もありません。 上記の問題を解決するには、カスタマイズされた Centos が必要です。 4.1.2. Dockerfileを書くカスタム Centos 用の Dockerfile を作成する FROM centosMAINTAINER 宁在春<[email protected]>ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vimRUN yum -y install net-toolsEXPOSE 80 CMD echo $MYPATHCMD echo "success"CMD /bin/bash #最後のものだけが実行されます 次にこれをコピーします。 mkdir -p /usr/local/docker/mycentos # 独自の保存場所を作成する vim Dockerfile 4.1.3. CentOSイメージのビルド次のコマンドを実行して、docker を実行します。 説明する:
埋め込む: 最後の一つを見ることは成功を意味します。 4.1.4. Centosイメージを実行するdocker run -it mycentos:1.3pwdifconfig コンテナに入るディレクトリが ENV MYPATH /usr/localWORKDIR $MYPATH 4.1.5. 画像の変更履歴を表示するdocker 履歴 mycentos:1.1 ここでは、Dockerfile ファイル内の指示に従ってイメージがレイヤーごとに構築されていることもわかります。 4.2 ONBUILDの例夫の鏡を最初に作ろう
FROM centosRUN yum -y install curlONBUILD RUN echo "サブイメージに継承されました。このステートメントを出力します" CMD ["crul", "-s","http://ip.cn"] 次のコマンドを実行して、docker を起動します。 鏡像を作る
my_father_centosRUN から yum -y install curlCMD ["crul", "-s","http://ip.cn"] 次のコマンドを実行して、docker を実行します。 親イメージ内の文が出力されていることがわかります。 Dockerfile の予約語命令に関するこの記事はこれで終わりです。関連する Dockerfile の予約語命令については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTML+JS に基づくシンプルな年齢計算ツールの実装
>>: CSSは親コンテナのdivをimg画像で埋め、コンテナのサイズに適応します。
jQueryを使用してフォーム検証を実装します。参考までに、具体的な内容は次のとおりです。登録.ht...
目次まとめ環境とツールの準備サーバー仮想化のインストール VMware ESXi仮想マシンのオペレー...
ハイパーリンクはインターネット全体を接続していると言っても過言ではありません。ハイパーリンクは、別の...
いくつかの記事を読んだ後、ようやく MySQL で row_number() ソートを実装する方法が...
目次addEventListener が必要な理由は何ですか? addEventListener を...
MySQL では、IF()、IFNULL()、NULLIF()、および ISNULL() 関数を使用...
Nginx: PV、UV、独立IPウェブサイトを作成する人なら誰でも、ウェブサイトのPV、UV、その...
目次一般的な配列メソッド配列要素の追加と削除配列ヘッダーの操作配列の末尾を操作する任意の場所に追加ま...
MySQL 5.7.27の詳細なダウンロード、インストール、および構成チュートリアルは参考までに、具...
<base> タグは、ページ上のすべてのリンクのデフォルトのアドレスまたはデフォルトの...
目次1. コンポーネント2. キープアライブ2.1 問題点2.2 キープアライブを使って解決する2....
目次1. v-bind: 要素の属性にデータをバインドできる2. v-bind: は次のように省略で...
MyBatisインターセプターのページング機能を実装する方法序文:まず、実装原則についてお話しします...
1.インストールしたい場所に解凍し、my.iniファイルを作成します。 my.iniの内容は次のと...
1. はじめにMySQL にログインすると、次のような警告が表示されることがよくあります。警告: コ...