序文前回の記事では、docker でコンテナを実行するために使用するイメージを dockerhub からリモートで取得しましたが、独自のイメージを構築することはできるでしょうか?答えはイエスです。Dockerfile を通じて独自のイメージを構築できます。Dockerfile 自体は難しくなく、単なるコマンドの集まりです。難しいと感じるのは、Dockerfile のこれらのコマンドを使用して、より高いレベルの観点から独自のイメージをより適切に構築する方法です。見てみましょう。 Dockerfile の紹介Dockerfile は実際にはファイルです。ファイルの名前は Dockerfile です。もちろん、この名前を使用して、イメージをビルドするときに名前を指定することもできます。ただし、一般的には Dockerfile を使用すると言われています。Dockerfile の主な機能は、カスタム イメージのビルドを支援することであるため、Dockerfile はイメージ ビルド ファイルまたはイメージ記述ファイルとも呼ばれます。 Dockerhub には基本的にすべてのサービスを満たした公式イメージが多数提供されているのに、なぜイメージをカスタマイズする必要があるのかと疑問に思う友人もいるかもしれません。 Dockerfile を使用して独自のイメージを構築することで、独自のアプリケーションをイメージにパッケージ化でき、そのイメージを実行すると、カスタマイズされた機能の一部を使用してサービスを直接実行できます。 例えば、dockerhubからcentos7イメージをダウンロードする場合、公式イメージにはvim機能がありません。そのため、公式centosイメージをベースに独自のイメージをビルドして、centosコンテナの実行時にvimを自動的にインストールすることができます。 Dockerfileはイメージプロセスを構築するDockerfile イメージ構築プロセスを紹介する前に、重要な概念であるコンテキスト ディレクトリについて知っておく必要があります。Dockerfile が配置されているディレクトリはコンテキスト ディレクトリと呼ばれます。 Docker は CS アーキテクチャです。Dockerfile を使用してイメージをビルドするために使用されるコマンドは docker build です。コマンドがクライアントのオペレーティング システムで実行されると、docker エンジンは Dockerfile が配置されているディレクトリ内のすべてのデータをパッケージ化し、docker サーバーに送信します。したがって、Dockerfile が配置されているディレクトリには、現在のイメージをビルドするために必要なファイルのみが含まれている必要があります。サーバーが Dockerfile 内のコマンド行を実行すると、docker キャッシュに一時イメージが生成されます (一時イメージを生成しない場合は、docker build の後に --no_cache パラメータを追加します)。最後の行まで実行すると、最終イメージが取得されます。次の図に示すように: Dockerfile の使用まず、イメージをビルドするための Dockerfile のコマンドについて説明します。 # コマンド形式: docker build -t イメージ名: タグ Dockerfile が配置されているパス docker build -t mycentos:01 . 以下は Dockerfile でよく使用されるコマンドの一部です。Dockerfile 内のすべてのコマンドは大文字で始まることに注意してください。 FROM イメージ名: タグ: Dockerfile の最初のコマンド。どのイメージに基づいてイメージを構築するかを示します。カスタム イメージがビルドされますが、このカスタム イメージも公式のベース イメージ上にビルドされます。 # Dockerファイル FROM centos:7 # は、イメージが centos7 に基づいて構築されていることを示します。 RUN: イメージをビルドするときに実行する必要があるコマンド。その後にシェル コマンドを続けることができます。 # 最初の構文形式 RUN yum install -y vim # 2番目の構文形式 RUN ["yum", "install", "-y", "vim"] EXPOSE: 外部に公開されるポート。イメージ内でポートが公開されている場合にのみ、docker run コマンドを実行するときに -p パラメータを指定できます。 EXPOSE 9000 # はポート9000を公開することを示します WORKDIR: コンテナに入るときのパスを指定します。パスは複数記述できます。コンテナ内に指定パスがない場合はパスが作成されます。パスは複数記述できます。次のパスは前のパスを基準とした相対パスです。 ワークディレクトリ /データ ワークディレクトリ /a COPY: コンテキスト ディレクトリ内の指定されたファイルをイメージ内の指定されたディレクトリにコピーします。 # コマンド形式: COPY 元のパス (絶対パスまたは相対パス) コンテナ内のターゲットパス# 構文形式 1 COPY /root/app/aa.txt /data # 構文形式 2 COPY ["<src>", ..., "<dest>"] --- 構文形式 2 ADD: コンテキスト ディレクトリ内の指定されたファイルをミラーの指定されたディレクトリにコピーします。URL を識別し、URL に対応する圧縮パッケージを自動的にダウンロードできます。また、ローカルの圧縮パッケージをミラーの指定されたディレクトリにコピーし、自動的に解凍することもできます。 #コンテキストディレクトリ内の指定されたファイルをミラーの指定されたディレクトリにコピーします ADD bb.txt /data # URL を自動的に識別し、コンテナ内の指定されたディレクトリにダウンロードします ADD https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz /data # 圧縮されたパッケージは指定されたディレクトリに自動的に解凍されます ADD xxx.tar /data ENTRYPOINT: コンテナの起動時に実行するコマンドを指定するために使用されます。CMD と同様に、コンテナの起動後の最初のコマンドを設定するためによく使用されます。複数のコマンドを記述でき、上書きすることもできます。 # ENTRYPOINT シェル スクリプトまたは ENTRYPOINT ["tail", "-f"...] エントリポイント tail -f bb.txt # 上書き docker run --entrypoint=cat mycentos:08 /data/bb.txt CMD: 最後の CMD が標準として使用されます。上書き可能で、ENTRYPOINT にパラメータを渡すことができ、ENTRYPOINT と組み合わせて使用できます (json 配列の形式でのみ使用できます) # 最後のCMDのみ実行 コマンド ls $BASEDIR CMD 猫 bb.txt # 上書き可能。docker run の後のコマンドは、Dockerfile の CMD の後のコマンドを直接上書きします。docker run mycentos:09 ls /data # ENTRYPOINT と組み合わせて使用して、ENTRYPOINT にパラメータを渡します。パラメータは動的に渡すことができます。たとえば、プロジェクト パスは変更されませんが、プロジェクト名は変更されます。この 2 つを組み合わせて使用する場合は、json 配列形式を使用する必要があることに注意してください。 エントリポイント ["ls", "/data"] コマンド [/data/bb"] または docker 実行 mycentos:10 /data/bb/aa Dockerfile でカスタムイメージを構築する実装についてはこれで終了です。Dockerfile でイメージを構築する方法については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: IE8互換表示(IE7モード)とスタンドアロンIE7の違いの詳細な説明
>>: CSS は Alibaba ベクター ライブラリを使用して、対応する位置に見栄えの良いアイコン効果をすばやく追加します (サンプル コード)
目次索引- 総合索引- ユニークなインデックス- 主キーインデックス- 複合インデックス- 全文索引...
MySQLは重複データを処理します一部の MySQL テーブルには重複レコードが含まれている場合があ...
1 はじめに優れたコーディング習慣は優れたプログラマーが備えるべき資質ですが、コードの品質を保証する...
1. はじめに先ほど、フロントエンドの表示の問題について説明しました。では、前のコンテンツに戻って、...
1.mysql-5.7.19-winx64.zip(これは無料のインストールバージョンで、約318 ...
1. mpstatコマンド1.1 コマンド形式 mpstat [ -A ] [ -u ] [ -V ...
目次概要1. Refsオブジェクトの作成1.1 React.createRef() 1.2React...
序文: Webサービスを提供するために、Alibabaクラウドホストを新しくインストールしました。す...
Docker バージョン: [root@localhost gae_proxy]# docker バ...
目次一般的な配列メソッドポップ()シフト解除()シフト()スライス()スプライス()配列から重複した...
JavaScriptでよく使われるいくつかの文字列メソッド文字列は読み取り専用データです。よく使用...
このロゴを .rar ファイルとしてローカルに保存し、解凍して効果を確認することができます。よりシン...
1. 複合主キーいわゆる複合主キーとは、テーブルの主キーが複数のフィールドで構成され、ビジネス上の意...
この記事では、MySQL ビューの原理と使用法についてまとめます。ご参考までに、詳細は以下の通りです...
質問:よく使用されるコマンド「ll」が無効であるか、コマンドが見つかりません理由: 「ll」コマンド...