今日は、Dockerfile を作成する方法を見ていきます。 Docker イメージを構築するには 2 つの方法があります。 1. 1つはdocker commitコマンドを使うことです 2. もう1つはdocker buildコマンドとdockerfileファイルに基づいています 一般的に、Dockerfile を使用してイメージをビルドする方が、Docker commit コマンドを使用してイメージをビルドするよりも柔軟性が高いため、後者の方が一般的に使用されます。 Dockerfileを使用してDockerイメージを構築する1. Dockerfile とは何ですか?dockerfile は DSL 構文を使用して記述されたファイルであり、docker build コマンドを使用して、dockerfile ファイル内の指示に基づいて新しいイメージを構築します。 コードが次の通りだとします: mkdir テスト CDテスト Dockerfileに触れる テスト ディレクトリを作成し、そのディレクトリに入って dockerfile_test ファイルを作成したことを理解するのは難しいことではありません。このディレクトリはビルド環境と呼ばれます。Docker はこの環境をコンテキストまたはビルド コンテキストと呼びます。Docker はイメージをビルドするときに、ビルド コンテキストとコンテキスト内のファイルとディレクトリを Docker デーモンにアップロードします。これにより、Docker デーモンはイメージに保存されているコード、ファイル、その他のデータに直接アクセスできるようになります。 Docker ファイルの内容を見てみましょう。 # バージョン: 0.0.1 ubuntu:14.04から メンテナー Yeyz '[email protected]' apt-get updateを実行する apt-get install -y nginxを実行します RUN echo 'こんにちは、私はあなたのコンテナです' > /root/test.html エクスポーズ80 上記のファイルの内容から、Dockerfile に一連のコマンドが含まれており、各コマンドを大文字のキーワードでマークする必要があることが簡単にわかります。 # で始まるコンテンツはコメントとして認識されます。 Docker は通常、Dockerfile 内のコマンドを次の順序で実行します。 1. Docker はベース イメージからコンテナを実行します。各 DockerFile の最初のコマンドは From である必要があります。From はベース イメージを指定し、後続の命令はこれに基づいて実行されます。 2. コンテナを変更する命令を実行する 3. docker commitと同様の操作を実行して新しいイメージレイヤーを送信します。 4. Dockerイメージは、送信されたイメージに基づいてコンテナを実行します。 5. すべてのコンテナ命令が実行されるまで、Dockerfile内の次の命令を実行します。 上記のプロセスで、いずれかのステップが実行に失敗した場合、ターゲット イメージの作成に失敗したことを意味します。ただし、ターゲット イメージはイメージを次々に積み重ねた結果であるため、実際には実行可能なイメージが得られますが、まだ最終イメージには達していません。この機能は、イメージのデバッグにとって非常に重要です。 上記の画像について説明します。 バージョン: バージョンを示すコメントを表します From命令では、ベースイメージubuntuを指定し、操作がベースイメージubuntu上で実行されることを示します。 メンテナーディレクティブ。画像の作成者と作成者のメールアドレスを表します。 RUN 命令は、現在のイメージで指定されたコマンドを実行します。3 つの命令は、apt リポジトリの更新、nginx パッケージのインストール、指定されたファイルへのコマンドの出力です。各コマンドはイメージレイヤーを作成します。コマンドが成功すると、イメージ レイヤーがコミットされ、DockerFile 内の次の命令が指定されます。デフォルトでは、RUN コマンドはシェルで /bin/bash -c を使用して、次の命令を実行します。 Expose 命令は、コンテナ内のアプリケーションにコンテナの指定されたポートを使用するように指示します。もちろん、複数の EXPOSE を使用して複数のポートを外部に公開することもできます。 2. Dockerfileを実行してイメージをビルドする今 Dockerfile を実行すると、次の結果が得られます。 [ルートテスト]# docker build -t='yeyz:test0' 。 ビルド コンテキストを Docker デーモンに送信しています 2.048 kB ステップ 1/6: ubuntu:14.04 から リポジトリ docker.io/library/ubuntu をプルしようとしています... 14.04: docker.io/library/ubuntu からプル 2e6e20c8e2e6: ダウンロード中 [> ] 539.1 kB/70.69 MB 95201152d9ff: ダウンロードが完了しました 5f63a3b65493: ダウンロードが完了しました -t オプションはイメージとウェアハウス名を指定するために使用され、yeyz はウェアハウス名、test0 はイメージ名です。コマンド内の . は現在のディレクトリを表します。Docker はデフォルトでローカル ディレクトリで DockerFile を検索します。また、指定された Git リポジトリ ソース アドレスに置き換えて、DockerFile の場所を指定することもできます。次のように: バージョン情報を保持したい場合は、次のようにタグを指定できます。 特定のディレクトリの下にあるいくつかのファイルのみをアップロードしたい場合は、各行がファイル フィルターの一致パターンである .dockerignore ファイルを作成できます。このようにして、イメージを生成するときに、不要なファイルが自動的にフィルターされます。 最終的な戻り値はイメージ ID です。イメージ ID を取得したら、docker run コマンドを使用してイメージを実行できます。 3. Dockerfileビルドキャッシュ Dockerfile を最初にビルドするときに問題が発生した場合、再度ビルドする必要があり、今回は同じ命令が実行されます。Dockerfile の 4 行目のコンテンツを変更すると、Docker はキャッシュによって最初の 3 行を自動的にロードするため、多くの時間を節約できます。 Dockerfile キャッシュを使用しない場合は、--no-cache パラメータを追加することで Dockerfile キャッシュの使用を回避できます。 4. イメージのビルド履歴を表示する Docker 履歴では、ビルドされたイメージのビルド履歴と、ビルドされたイメージの各レイヤーを表示できます。 [root@VM-16-13-centos test]# docker イメージ mysql リポジトリ タグ イメージ ID 作成 サイズ docker.io/mysql 最新 4f1413420360 7 週間前 545 MB [root@VM-16-13-centos テスト]# docker 履歴 4f1413420360 画像作成者 サイズ コメント 4f1413420360 7 週間前 /bin/sh -c #(nop) CMD ["mysqld"] 0 B <欠落> 7 週間前 /bin/sh -c #(nop) EXPOSE 3306 33060 0 B <missing> 7 週間前 /bin/sh -c #(nop) ENTRYPOINT ["docker-ent... 0 B <欠落> 7 週間前 /bin/sh -c ln -s usr/local/bin/docker-entr... 34 B <欠落> 7 週間前 /bin/sh -c #(nop) COPY ファイル:f9202f6b715c0e... 13.1 kB <欠落> 7 週間前 /bin/sh -c #(nop) COPY dir:2e040acc386ebd2... 1.12 kB <欠落> 7 週間前 /bin/sh -c #(nop) VOLUME [/var/lib/mysql] 0 B <欠落> 7 週間前 /bin/sh -c { echo mysql-community-server... 410 MB <欠落> 7 週間前 /bin/sh -c echo "deb http://repo.mysql.com... 55 B <欠落> 7 週間前 /bin/sh -c #(nop) ENV MYSQL_VERSION=8.0.2... 0 B <欠落> 7 週間前 /bin/sh -c #(nop) ENV MYSQL_MAJOR=8.0 0 B <欠落> 7 週間前 /bin/sh -c set -ex; key='A4A9406876FCBD3C... 2.61 kB <不足> 7 週間前 /bin/sh -c apt-get update && apt-get insta... 52.2 MB <欠落> 7 週間前 /bin/sh -c mkdir /docker-entrypoint-initdb.d 0 B <欠落> 7 週間前 /bin/sh -c set -eux; savedAptMark="$(apt-... 4.17 MB <欠落> 7 週間前 /bin/sh -c #(nop) ENV GOSU_VERSION=1.12 0 B <欠落> 7 週間前 /bin/sh -c apt-get update && apt-get insta... 9.34 MB <欠落> 7 週間前 /bin/sh -c groupadd -r mysql && useradd -r... 329 kB <欠落> 7 週間前 /bin/sh -c #(nop) CMD ["bash"] 0 B <不足> 7 週間前 /bin/sh -c #(nop) ADD file:d2abb0e4e7ac177... 69.2 MB 以上が、Dockerfile を使用して Docker イメージを構築する方法の詳細です。Dockerfile を使用して Docker イメージを構築する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
はじめに: Lynis は、徹底的なセキュリティ スキャンを実行できる Unix システム用のセキュ...
目次現状解決さらなる解決策やっと現状WeChat ミニプログラムには、ホームページ、個人ページ、いく...
コードをコピーコードは次のとおりです。 <スタイル タイプ="text/css&qu...
まず、よくある質問は、ECMAScript と JavaScript の関係は何ですか? ECMAS...
ソフトウェアバージョンウィンドウズ: ウィンドウズ10 MySQL: mysql-8.0.16-wi...
序文MySQL は MySQL 5.6 からマルチスレッド レプリケーションをサポートしていますが、...
パート1: 基礎1. :active や :hover などの疑似クラスとは異なり、これらはすべて疑...
1. インデックスの原則インデックスは、列内の特定の値を持つ行をすばやく見つけるために使用されます。...
Dockerデスクトップをインストールするダウンロード先: Docker Desktop for M...
エクスポートデフォルト({ URL、 メソッド = 'GET'、 データ = nu...
目次1. 実施プロセス2. オブザーバーを表示する3. ウォッチャーを実装する4. コンパイルを実装...
注意: この方法は、Webkit ベースのブラウザにのみ適用されます。ブラウザのスクロールバーが広す...
Nginx ログの説明アクセス ログを通じて、ユーザーの地理的起源、ジャンプ元、使用端末、特定の U...
問題の説明プラグインをインストールした後、ES7 React/Redux/GraphQL/React...
<br />Web2.0とは何ですか? Web2.0にはソーシャルネットワーク製品とその...