以前、プロジェクトを迅速にデプロイするために 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画像で埋め、コンテナのサイズに適応します。
今日はベテランの貴重な経験を共有します。著者は技術管理の経験が7年あり、多い時は80人以上を率いてい...
ほとんどの場合、MySQL はインストールしたばかりのときは中国語をサポートしません。これはエンコー...
HTML: タイトル見出しは <h1> - <h6> などのタグによって定...
序文スワップは、ディスク上にある「仮想メモリ」の一部である特殊なファイル (またはパーティション) ...
まとめDocker-compose は複数の Docker コンテナ サービスを簡単に組み合わせるこ...
目次単一コンテンツ投影マルチコンテンツ投影単一条件のコンテンツ投影アプリ-人物-htmlアプリ担当者...
原理としては、まずボタン付きの div を記述し、次に画面のサイズに応じて自動的に適応してキーボード...
環境: CentOS 7.1.1503 最小インストール依存パッケージをダウンロードします: yum...
最近、MySQL 5.6 を導入しましたが、デフォルトでは MySQL はローカル サービスのみを許...
1. ログセグメンテーションのためのLog4j 1) log4j-1.2.17.jar、tomcat...
Ubuntu仮想マシンでのシリアル通信にcutecomを使用する1. cutecomをインストールす...
テーブルの背景色は、BGCOLOR 属性を通じて設定できます。基本的な構文<テーブル BGCO...
前提条件: ヘッダー情報操作をサポートするには、ngx_http_headers_module モジ...
/etc/my.cnf または /etc/mysql/my.cnf ファイルを変更する [クライアン...
1. レンダリング2. 操作手順1. テンセントマップキーを申請する - 住所2. ミニプログラムの...