序文 Dockerfile は Docker プログラムによって解釈されるスクリプトです。Dockerfile は 1 つ 1 つの命令で構成されており、各命令は Linux のコマンドに対応しています。 Docker プログラムは、これらの Dockerfile 命令を実際の Linux コマンドに変換します。 Dockerfile には独自の記述形式とサポートされているコマンドがあります。Docker プログラムは Makefile と同様に、これらのコマンド間の依存関係を解決します。 Docker プログラムは Dockerfile を読み取り、指示に従ってカスタマイズされたイメージを生成します。イメージのようなブラックボックスと比較すると、Dockerfile のようなわかりやすいスクリプトは、イメージがどのように生成されるかを明確に示しているため、ユーザーに受け入れられやすくなります。 Dockerfile を使用すると、独自の追加要件をカスタマイズする必要がある場合、Dockerfile に指示を追加または変更してイメージを再生成するだけで済み、コマンドを入力する手間が省けます。 Dockerfileで使用されるコマンドは から FROM はベースイメージを指定します。通常、使用可能な Dockerfile では最初の命令として FROM が必要です。画像に関しては、既存の適切な画像ミラーであれば何でも構いません。 FROM は Dockerfile 内の最初の非コメント命令である必要があります。 混合イメージの作成を容易にするために、FROM は Dockerfile 内に複数回出現することができます。 タグが指定されていない場合は、使用するベースイメージのバージョンとして最新のものが使用されます。 メンテナー 画像メーカーを指定するための情報はこちら 走る RUN コマンドは、現在のイメージ内の有効なコマンドを実行し、実行結果を送信します。コマンドが実行されて送信されると、Dockerfile 内の次の命令が自動的に実行されます。 階層的な RUN 命令と生成されたコミットは、Docker のコアコンセプトに沿っています。バージョン管理と同様に、いつでもイメージ イメージのカスタム ビルドが可能になります。 RUN 命令キャッシュは、次のコマンドが実行されても自動的に無効化されません。たとえば、RUN apt-get dist-upgrade -y のキャッシュは次のコマンドに使用される場合があります。--no-cache フラグを使用すると、キャッシュを強制的に無効にすることができます。 環境 ENV 命令を使用して、Docker コンテナの環境変数を設定できます。 ENV によって設定された環境変数は、docker inspect コマンドを使用して表示できます。環境変数を変更するには、docker run --env <key>=<value> を使用することもできます。 ユーザー USER は、実行中の所有者 ID を切り替えるために使用されます。 Docker はデフォルトで root を使用しますが、必要がない場合は別のユーザーに切り替えることをお勧めします。結局のところ、root には権限が大きすぎるため、使用するにはセキュリティ上のリスクがあります。 ワークディレクトリ WORKDIR は作業ディレクトリを切り替えるために使用されます。 Docker のデフォルトの作業ディレクトリは / です。ディレクトリを切り替える cd コマンドを実行できるのは RUN のみであり、現在の RUN に対してのみ機能するため、各 RUN は独立して実行されます。他の命令を指定されたディレクトリで実行したい場合は、WORKDIR に依存する必要があります。 WORKDIR アクションによって行われたディレクトリの変更は永続的であるため、各コマンドの前に WORKDIR を使用する必要はありません。 コピー COPY は、コンテナ内のパス <src> からパス <dest> にファイルをコピーします。 <ソース> ソース フォルダー内のファイルまたはディレクトリ、またはリモート URL である必要があります。 ターゲット コンテナ内の絶対パスです。 すべての新しいファイルとフォルダーは、UID と GID を使用して作成されます。実際、<src> がリモート ファイル URL の場合、ターゲット ファイルの権限は 600 になります。 追加 ADD は、コンテナ内のパス <src> からパス <dest> にファイルをコピーします。 <src> は、ソース フォルダー内のファイルまたはディレクトリ、またはリモート URL である必要があります。 <dest> は宛先コンテナ内の絶対パスです。 すべての新しいファイルとフォルダーには UID と GID が作成されます。実際、<src> がリモート ファイル URL の場合、ターゲット ファイルの権限は 600 になります。 音量 ローカル ホストまたは他のコンテナーからマウントできるマウント ポイントを作成します。通常、これは、維持する必要があるデータベースやデータを保存するために使用されます。 さらす EXPOSE 命令は、Docker が許可した場合に指定されたポートを転送することを指定します。 CMDF Dockerfile には CMD 命令が 1 つだけ存在できます。 複数の CMD コマンドを指定した場合、最後のコマンドが有効になります。 CMD 命令の主な機能は、デフォルトの実行コンテナを提供することです。これらのデフォルトには実行可能ファイルを含めることも、実行可能ファイルを省略することもできます。 シェルまたはexec形式を使用する場合、CMD このコマンドは自動的に実行されます。 オンビルド ONBUILD の機能は、イメージのビルド時に、FROM を使用する次の Dockerfile が実行されるまで命令の実行を遅延することです。遅延は 1 回に制限されます。 ONBUILD の使用シナリオは、最新のソース コードを取得し (RUN を使用)、イメージをビルドするときにシステム フレームワークを制限することです。 ARGB ARG は、Docker バージョン 1.9 で追加された新しいコマンドです。 ARG で定義された変数は、イメージが作成された時のみ有効です。作成が完了すると、変数は無効になり、消えます。 ラベル イメージ タグ Owner を定義し、変数 Name の値と等しい値を割り当てます。 (ラベル所有者=$Name) エントリーポイント Docker イメージがインスタンス (つまり、Docker コンテナ) として実行されるときに実行されるコマンドまたはファイルを指定します。 知らせ: CMD と ENTRYPOINT はどちらも実行を開始するプログラムを指定するために使用でき、両方のコマンドには 2 つの異なる構文があります。 コマンドls -l または コマンド ["ls",''-l"] 最初の構文の場合、Docker はコマンドに「/bin/sh –c」を自動的に追加するため、予期しない動作が発生する可能性があります。この動作を回避するには、すべての CMD と ENTRYPOINT で 2 番目の構文を使用することをお勧めします。 両方を使用する場合は、必ず意味を理解してください。一般的に言えば、両方を使用する必要があるのは、ENTRYPOINT が実行するバイナリを指定し、CMD が実行のデフォルト パラメータを指定する場合のみです。
Dockerfile 内の各コマンドは新しいレイヤーを作成しますが、コンテナーが持つことができるレイヤーの最大数には制限があります。したがって、論理的に一貫性のあるコマンドを可能な限りマージすることで、レイヤーの数を減らすことができます。コマンドをマージする方法としては、マージ可能な複数のコマンド (EXPOSE、ENV、VOLUME、COPY) をマージする方法などがあります。 Dockerfile 内の各コマンドは新しいレイヤーを作成しますが、コンテナーが持つことができるレイヤーの最大数には制限があります。したがって、論理的に一貫性のあるコマンドを可能な限りマージすると、レイヤーの数を減らすことができ、コンパイルの速度も向上します。 組み合わせ可能な複数のコマンド (RUN、EXPOSE、ENV、VOLUME、COPY) を組み合わせます。例: エクソイーズ80 エクソイズ8080 コマンド cd /tmp コマンドls ==> エグゾイーズ80 8080 コマンド cd /tmp && ls ADD コマンドと COPY コマンドは、ほぼ同じ機能を持ちます。ただし、COPY セマンティクスの方が直接的であるため、可能な場合は常に COPY コマンドを使用することをお勧めします。唯一の例外は、ADD コマンドには独自の解凍機能があることです。ファイルをイメージにコピーして解凍する必要がある場合は、ADD コマンドを使用できます。それ以外の場合は、COPY コマンドを使用することをお勧めします。 1.1.1.100:1234/jdk-8u74-linux-x64.tar.gz /usr/local/ を追加します。
デフォルトでは、すべての Docker アプリケーションはコンテナのルート ユーザーの下で実行されますが、これにより潜在的なセキュリティ リスクが発生します。実稼働環境で実行されるコンテナは、USER コマンドを使用して、権限のないユーザーで実行するのが最適です。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: CentOS の MySQL に MariaDB をインストールするときに発生する方法と問題
>>: Webstorm と Chrome を使用して Vue プロジェクトをデバッグする方法
ボタンは頻繁に使用されます。ここでは、イベント処理メソッドを整理し、実装方法が多数あることを発見しま...
Fast-Linux プロジェクト アドレス: https://gitee.com/uitc/Fas...
エラーメッセージ:エラー 2002 (HY000): ソケット '/tmp/mysql.so...
まずアイデアはこの効果を実現するには、 <input type="checkbox&...
LNMP とは: Linux+Nginx+Mysql+(php-fpm、php-mysql)つまり、...
背景同社のサーバーはすべて Alibaba Cloud ECS ホストを購入しています。デフォルトの...
この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...
FIFO通信(先入れ先出し)関連のないプロセス間の通信を可能にする FIFO 名前付きパイプ。パイプ...
序文私は、Web サイトのフロントエンド パフォーマンス最適化のための JavaScript と C...
この記事では、Web デザインの達人がよく使用するレスポンシブ フレームワーク (概要) を紹介し、...
目次簡単なコンポーネントの例より複雑な親子コンポーネントのケースオンセレクトの書き方反応する子供Re...
目次成果を達成する転がり荷重知識備蓄コンポーネントのパッケージ1. コンポーネントの命名2. 小道具...
ログインページなどのホームページを作成する場合、大きな背景画像を配置する必要があり、さまざまな画面の...
123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...
Linux と Unix はマルチユーザー オペレーティング システムであるため、ファイルの権限と所...