一般的な Dockerfile コマンドの使用方法の紹介

一般的な Dockerfile コマンドの使用方法の紹介

以前の記事では、RUN、FROM、MAINTAINER、EXPOSE などの DockerFile 関連のコマンドについて説明しました。今日は、その他の DockerFile コマンドについて説明します。

01 CM

CMD コマンドは、コンテナの起動時に実行する必要があるコマンドを指定するために使用されます。 RUN 命令に似ていますが、違いは次のとおりです。

RUN 命令は、イメージをビルドするときに実行する必要があるコマンドです。

CMD 命令は、コンテナの起動時に実行される命令を指定します。例:

docker run -it コンテナ名 /bin/ls

このコマンドはコンテナを起動し、/bin/lsを実行します。

これは、手動で docker を入力して ls コマンドを実行するのと同じです。代わりに、DockerFile で次のコマンドを使用できます。

コマンド [ "/bin/ls" ]

DockerFile で指定できる CMD コマンドは 1 つだけであることに注意してください。複数のコマンドを指定した場合でも、最後のコマンドのみが実行されます。

DockerFile で CMD 命令を使用すると、CMD 命令は docker run コマンドの直後に実行されます。次に例を示します。

docker run -it コンテナ名

このコンテナを起動すると、/bin/ls コマンドが直接実行されます。

02 エントリーポイント

このコマンドは上記の CMD コマンドと非常によく似ていますが、docker run コマンドの後に指定されたパラメーターは、ENTRYPOINT 命令のコマンドにパラメーターとして再度渡される点が異なります。

03 ワークディレクトリ

WORKDIR 命令は、イメージから新しいコンテナを作成するときに、コンテナ内の作業ディレクトリを設定するために使用されます。 ENTRYPOINT または CMD コマンドはこのディレクトリで実行されます。

このコマンドは、一連の後続のコマンドの作業ディレクトリを設定するために、DockerFile の先頭に表示されることがよくあります。特定のコマンドを指定した後、このコマンドを使用して現在のディレクトリを切り替えることもできます。したがって、通常、WORKDIR コマンドを使用する最も一般的な方法は次のとおりです。

ワークディレクトリ /data1/xxxxx

実行xxxxx

実行xxxxxx

ワークディレクトリ /data2/xxxxx

実行xxxxx

実行xxxxx

ディレクトリを常時切り替えるためのツールです。

DockerFile でディレクトリを指定したが、Docker の実行時にそれを使用したくない場合はどうすればよいでしょうか?

答えはdocker run -w /var/dir1を使うことです

-w パラメータを使用した後、/var/dir1 を使用して DockerFile 内のパスが上書きされます。

04 環境

ENV 命令は、DockerFile を生成するときに環境変数を指定するために使用されます。例えば:

環境変数 PYRHON_HOME /usr/bin/python

上記の WORKDIR と組み合わせることもできます。例:

環境変数 PYRHON_HOME /usr/bin/python

ワークディレクトリ $PYTHON_HOME

ENV コマンドで生成されたコンテナ内で env コマンドを使用して、現在のコンテナの環境変数を表示することもできます。また、設定した PYRHON_HOME の値を確認することもできます。

この方法に加えて、docker -e コマンドを使用して環境変数を渡すこともできますが、この方法で渡される環境変数は実行時にのみ有効です。

05 ユーザー

USER 命令は、イメージを実行するユーザーを指定するために使用されます。例えば:

ユーザー mysql

もちろん、

ユーザー ユーザー

USER ユーザー:グループ

ユーザーID

ユーザー uid:gid

注意すべき点が 2 つあります。

1. docker run で -u コマンドを使用して、DockerFile の USER オプションを上書きできます。

2. USERオプションが指定されていない場合、デフォルトのユーザーはrootになります。

06巻

VOLUME 命令は、イメージから作成されたコンテナにボリュームを追加するために使用されます。ボリュームは、1 つ以上のコンテナー内の特定のディレクトリに存在できます。このディレクトリは、たとえば、データの共有やデータの永続化の機能を提供できます。

1. ボリュームはコンテナ間で共有および再利用できる

2. コンテナは他のコンテナとボリュームを共有する必要がない

3. ボリュームの変更はすぐに有効になります

4. ボリュームはコンテナが必要としなくなるまで存在する

この機能を使用すると、画像に送信するのではなく、画像にコードやデータを追加することができます。これにより、画像のサイズが大幅に縮小されます。これらのコンテンツを複数のコンテナ間で共有できるため、VOLUME はコンテナの正確性をテストするためによく使用されます。

ボリューム [ "/volume" ]

このコマンドは、このイメージを使用して作成されたコンテナに対して /volume という名前のマウント ポイントを作成します。

配列を使用して複数のマウント ポイントを作成することもできます。

ボリューム [ "/data1", "/data2" ]

07 追加

ADD コマンドは、ビルド環境内のファイルとディレクトリをイメージにコピーするために使用されます。 ADD コマンドの使用時には、次のようにファイルのソースとターゲットの場所が必要です。

aaa.txt /data1/aaa.txt を追加します

このコマンドは、イメージビルドディレクトリ内の aaa.txt ファイルをイメージ内の /data1/aaa.txt ディレクトリにコピーします。ソース ファイルは、ビルド環境のコンテキスト内のファイルであるだけでなく、URL になることもできます。

ADD ファイル プロセス中に、宛先アドレスが / で終わる場合、DockerFile はソースの場所をディレクトリと見なし、それ以外の場合はソース ファイルをファイルと見なします。

もう一つの注意点: ソース ファイルが tar.gz などのローカル アーカイブ ファイルの場合、Docker はそれをターゲット ファイルに解凍します。

08 コピー

COPY コマンドは ADD と非常によく似ています。ADD との違いは、COPY は URL 方式をサポートしておらず、ファイルをアクティブに解凍しないことです。COPY 命令の宛先は、コンテナー内の絶対パスである必要があります。

注記:

1. このコマンドによって作成されたファイルまたはディレクトリのUIDとGIDは0に設定されます。

2. 宛先の場所が存在しない場合は、Docker は必要なすべてのディレクトリ構造を自動的に作成します。 mkdir -p と同じです。

今日はこれですべてです。少し退屈に感じるかもしれません。これらのコマンドを説明するために、後で例を追加します。

以上が、一般的なDockerfileコマンドの使い方の紹介の詳しい内容です。Dockerfileコマンドの使い方について、さらに詳しく知りたい方は、123WORDPRESS.COMの関連記事もぜひご覧ください!

以下もご興味があるかもしれません:
  • Dockerfile の一般的なコマンドの概要
  • Dockerfile の COPY コマンドと ADD コマンドの詳細な説明
  • Dockerfile の CMD および ENTRYPOINT コマンドの詳細な説明
  • Docker の基礎: Dockerfile コマンドの詳細な説明
  • Dockerfileイメージ構築ファイルとDockerの関連コマンドの詳細な紹介

<<:  MySQLインストール後のデフォルトデータベースの役割の詳細な説明

>>:  シンプルなデータ応答システムを実装する

推薦する

VMware Workstation 15 Pro に Ubuntu 1804 をインストールするチュートリアル (画像とテキスト付き)

このメモはインストール チュートリアルです。実用的な意味はありません。記録のためだけに書いています。...

WMLとは何ですか?

WML (ワイヤレス マークアップ言語)。これは HTML から派生したマークアップ言語ですが、W...

Linux のバックグラウンドで & と nohup を使用する方法

ターミナルやコンソールで作業しているときは、メールを読むなど、もっと重要な作業があるかもしれないので...

MySQLトランザクションを実行するための構文とプロセスの詳細な説明

概要: MySQL は、トランザクションをサポートするためにさまざまなストレージ エンジンを提供しま...

Flutterを使用して移動可能なスタックウィジェット機能を作成する

この投稿では、キャンバスとドラッグ可能なノード インターフェースを使用するデスクトップおよび Web...

ie8/ie9/ie10/ie11 chrome firefox を区別するための CSS コード

ウェブサイトの互換性のデバッグは本当に面倒です。今日のウェブサイト デザイナーは、以前よりもはるかに...

Vue+SSMは画像アップロードのプレビュー効果を実現します

現在の要件は、ファイルのアップロード ボタンがあることです。ボタンをクリックすると、アップロードする...

CentOS 8 / RHEL 8 に VirtualBox 6.0 をインストールするための詳細なチュートリアル

VirtualBox は、技術者が異なる種類の複数の仮想マシン (VM) を同時に実行できるようにす...

MySQL シリーズ 6 のユーザーと認証

目次チュートリアルシリーズ1. ユーザー管理1. ユーザーアカウント2. アカウントの追加と削除3....

JSフロントエンドモジュール化のいくつかの仕様についての簡単な説明

目次序文フロントエンドモジュール開発の価値厄介な名前の競合面倒なファイル依存関係モジュール化の利点C...

WeChatミニプログラムページ間の価値転送を実装する方法の例

ミニプログラムページ間で値を渡すみなさんこんばんは。こんばんはと言うのは、これを夜に書いたからです。...

ユーザー名が使用可能かどうかを確認するVueメソッド

この記事では、ユーザー名が使用可能かどうかを確認するためのVueの具体的なコードを例として紹介します...

MySQL での置換例の詳細な説明

MySQL での置換例の詳細な説明replace into は insert と似ていますが、rep...

JavaScript Domはカルーセルの原理と例を実装します

カルーセルを作りたい場合、まずその原理を理解する必要があります。画像を右から左にスライドさせるにはど...

Linuxで新しいユーザーを作成し、指定されたディレクトリへの権限を付与する

1 ユーザーを作成し、ユーザーのルートパスとパスワードを指定します useradd -d /home...