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

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

推薦する

docker を使用して複数のネットワーク インターフェースを持つコンテナーを起動する方法の例

コンテナにネットワークインターフェースを追加する1 デフォルトのネットワークモードでコンテナを実行す...

mysql8.x docker リモートアクセスの詳細な設定

目次環境条件エラーが発生しました回避策1. mysql dockerにログインする2. ルートパスワ...

あなたをエキスパートに見せるための 13 個の JavaScript ワンライナー

目次1. ランダムなブール値( true / false )を取得する2. 指定された日付が営業日で...

Vueはビデオ再生を実装するためにビデオタグを使用します

この記事では、ビデオタグを使用してビデオ再生を実装するVueの具体的なコードを参考までに共有します。...

Vue実戦記録のログインページの実装

目次1. 事前準備1.1 Node.jsをインストールする1.2 webpackをインストールする1...

Nginx 正規表現の詳細な説明

Nginx (エンジン x) は、高性能な HTTP およびリバース プロキシ サーバーであり、IM...

MySQL データベースの 1045 エラーの解決方法

ローカル データベースがサーバー データベースに接続されているときに発生する 1045 の問題を解決...

Html+CSS 描画三角形アイコン

まずはレンダリングを見てみましょう: XML/HTML コードコンテンツをクリップボードにコピー&l...

MySQL 同期遅延が発生したときに Seconds_Behind_Master が 0 のままになる理由

目次問題の説明原理分析問題分析拡大する総括する問題の説明ユーザーはプライマリ データベースに対して変...

Redission-tomcatは、単一マシンから複数マシンへの展開を迅速に実装します。

序文一部のプロジェクトの初期段階では、シンプルさとスピードのために、開発と展開は単一のマシンで行われ...

TypeScript 2.0 マーク付き共用体型の詳細な説明

目次タグ付きユニオン型を使用した支払い方法の構築タグ付きユニオン型を使用した Redux アクション...

nginx で正規表現を使用してワイルドカードドメイン名を自動的に一致させる方法

Nginxは正規表現を使用して、ワイルドカードドメイン名をディレクトリに自動的に一致させます。 Ng...

MySQLスローログクエリの詳細な説明

遅いログクエリ機能スロー ログ クエリの主な機能は、設定された時間しきい値を超える SQL ステート...

JS WebSocket 切断理由とハートビートの仕組みの詳しい説明

1. 切断理由WebSocket が切断される理由は多数あります。WebSocket が切断されたと...

js が CSS 属性 (値) のサポートを決定して通知する状況の分析

新しい CSS 機能を使用する場合、その互換性は常に考慮されます。おそらく、その互換性、どのブラウザ...