一般的な 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インストール後のデフォルトデータベースの役割の詳細な説明

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

推薦する

Win7 の VMware 仮想マシンに Linux7.2 をインストールするインターネット アクセス構成チュートリアル

参考までに、win7システム上のVMware仮想マシンにlinux7.2インターネットアクセス構成を...

CSS3 で作成したホバーズーム効果

結果:実装コード: html <link href='https://fonts.go...

Vue3.0 異なる解像度のコンピュータの適応操作

まず依存関係をインストールする必要があります npm i lib-flexible-computer...

MySQLデータファイルの保存場所を表示する方法

次のような疑問が湧くかもしれません。MySQLをローカル (自分のコンピュータ) にインストールした...

MySQL のデバッグと最適化に関する 101 のヒントを共有する

MySQL は強力なオープンソース データベースです。データベース駆動型アプリケーションの数が増える...

HTML メタビューポート属性の詳細な説明

ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウィンドウ」(ビューポート) に配置し...

Zabbix による VMware Exsi ホストの監視のグラフィカルな手順

1. 仮想化 vcenter に入り、ブラウザでログインし (クライアントは設定する場所を見つけませ...

RHEL7.5 mysql 8.0.11 インストールチュートリアル

この記事はRHEL7.5でのMySQL 8.0.11のインストールチュートリアルを記録しています。具...

行の高さと垂直方向の配置についての深い理解

いくつかの概念行ボックス: インライン ボックスを囲むボックス。1 つ以上の行ボックスが積み重ねられ...

MySQL の異なるテーブル間でフィールドをコピーする

場合によっては、フィールドから別の新しいフィールドにデータの列全体をコピーする必要があります。これは...

JavaScript キャンバス テキスト クロック

この記事では、テキストクロックを実装するためのキャンバスの具体的なコードを例として紹介します。具体的...

MySQL 8.0 バージョンで getTables がすべてのデータベース テーブルを返す問題の簡単な分析

序文この記事では、主にライブラリ内のすべてのテーブルを返すMysql8.0ドライバgetTables...

MySQLマスタースレーブデータベース構築方法の詳細な説明

この記事では、MySQL マスター/スレーブ データベースの構築方法について説明します。ご参考までに...

MAC で MySQL のデフォルトの文字セットを utf8 に変更する方法

1. デフォルトでインストールされているMySQLの文字セットを確認するmysql> '...