以前、プロジェクトを迅速にデプロイするために 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画像で埋め、コンテナのサイズに適応します。
目次コンポーネント通信の概要コンテンツ3つの方法まとめコンポーネントコミュニケーション - 父から息...
dl:定義一覧定義リストdt:定義タイトルタイトルを定義するdd:定義説明定義の説明dt は情報のタ...
スライドショーは Web ページでよく見られます。美しい写真が使われています。こちらは純粋な CSS...
スクリプトをデバッグモードで実行するbash -x <script> を使用すると、スク...
序文MySQL マスター スレーブ レプリケーションの基本原理は、スレーブ データベースがマスター ...
クリックハウスの紹介ClickHouse は、SQL クエリを使用して分析データ レポートをリアルタ...
絶対位置決め方式: (1)親要素を相対配置に設定します。親要素の高さを指定しない場合は、左の子要素の...
Centos7.6 に Tomcat-8.5.39 をインストールする方法は次のとおりです。詳細は次...
目次1. ダウンロード2. インストール3. my.ini ファイルを設定する(デフォルトのエンコー...
ドライバーモジュールに渡すパラメータ名、タイプ、権限を宣言します。 module_param(変数名...
1. はじめにこの記事では、Docker を使用して Redis を探索する方法を説明します。 Do...
目次01 MySQLルーターの紹介MySQL Router とは何ですか? 02 MySQLルータの...
最近、IM を実行するときに、これらの 3 つのキーワードを同時に使用したときに問題が発生しました。...
nginx をコンパイルしてインストールし、一定期間使用した後、現在のバージョンに脆弱性があることや...
仮想マシンはホストマシンにインストールされます。 CPU とメモリはホスト マシンと共有する必要があ...