Docker 実行オプションを使用して Dockerfile の設定を上書きする

Docker 実行オプションを使用して Dockerfile の設定を上書きする

通常は、最初に Dockerfile ファイルを定義し、次に docker build コマンドを使用してイメージ ファイルをビルドします。次に、docker run を通じてイメージ ファイルに基づいてコンテナ インスタンスを起動できます。

次に、コンテナを起動するときに、イメージ ファイル内のいくつかのパラメータを変更できます。イメージ ファイル内のこれらのパラメータは、多くの場合、Dockerfile ファイルによって定義されます。

ただし、コンテナの起動時に Dockerfile ファイル内のすべての定義を再定義できるわけではありません。 docker run で上書きできない Dockerfile の命令は次のとおりです。

  • から
  • メンテナー
  • 走る
  • 追加
  • コピー

1. ENTRYPOINT命令を上書きする

Dockerfile ファイル内の ENTRYPOINT 命令は、コンテナの起動後にデフォルトのエントリ ポイントを指定するために使用されます。
ENTRYPOINT 命令は、コンテナの起動後のデフォルトの動作を指定します。コンテナの起動時にこれを上書きすることは通常困難ですが、コマンド パラメータを追加することができます。次に例を示します。

  • docker run --entrypoint /bin/bash ...はコンテナエントリのコマンドパラメータを返します。
  • docker run --entrypoint="/bin/bash ..." ...はコンテナに新しいシェルを提供します
  • docker run -it --entrypoint="" mysql bash 、コンテナエントリをリセットします

2. CMDコマンドを上書きする

Dockerfile ファイル内の CMD 命令は、コンテナの起動後に実行されるデフォルトの命令を指定します。

コンテナを起動するときに、docker run の新しいコマンド オプションを設定して、Dockerfile ファイル内の CMD 命令を上書きすることができます (Dockerfile ファイル内の CMD 命令は参照されなくなります)。次に例を示します。

  • docker run ... <New_Command>では、Dockerfile内のデフォルトの指示を上書きする別のコマンドを指定できます。

ENTRYPOINT 命令も Dockerfile ファイルで宣言されている場合、上記の命令は ENTRYPOINT 命令にパラメータとして追加されます。

3. EXPOSE命令をオーバーライドする

Dockerfile ファイル内の EXPOSE 命令は、コンテナが配置されているホストのポートを予約するために使用されます。

どうやらこれはランタイム コンテナの機能なので、docker run はその命令を便利にオーバーライドできます。次に例を示します。

  • docker run --expose="port_number:port_number"
  • docker run -p port_number:port_number/tcp 、指定された範囲のポートを開きます。
  • docker run --link="another_container_id" 、別のコンテナへのリンク
  • docker run -P 、すべてのポートを開く

4. ENVディレクティブをオーバーライドする

Dockerfile ファイル内の ENV 命令は、コンテナ内の環境変数を設定するために使用されます。

コンテナを起動すると、コンテナに対して次の環境変数が自動的に設定されます。

  • HOME、USERに基づいてユーザーのホームディレクトリを設定します
  • HOSTNAME、デフォルトのコンテナホスト名
  • PATH、デフォルト:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • TERM、コンテナに疑似TTYが割り当てられている場合はデフォルトxterm

docker run はこの命令を便利に上書きできます。次に例を示します。

docker run -e "key=value" ... 、新しい環境変数キーを設定します
docker run -h ... 、HOSTNAMEを上書きする
docker run ubuntu /bin/bash -c export

-x HOME="/" を宣言します
宣言 -x ホスト名="85bc26a0e200"
-x OLDPWDを宣言する
-x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" を宣言します。
-x PWD="/" を宣言します
-x SHLVL="1" を宣言します
-x deep="purple" を宣言します

スクリプトによる環境変数の設定または上書き

5. VOLUME命令をオーバーライドする

Dockerfile 内の VOLUME 命令は、コンテナのデータ ボリュームを設定するために使用されます。

  • docker run -v ...
  • docker run -volumes-from ...

6. USERコマンドを上書きする

コンテナ内のデフォルト ユーザーは root (uid=0) です。
Dockerfile ファイルでは、USER を使用して他のユーザーをコンテナのデフォルト ユーザーとして指定できます。

  • docker run -u="" ...
  • docker run --user="" ...

Docker run は、次の形式の -u をサポートしています。

  • ユーザー
  • ユーザー:グループ
  • ユーザID
  • ユーザID:グループID
  • ユーザー:gid
  • uid:グループ

7. WORKDIRディレクティブをオーバーライドする

Dockerfile ファイル内の WORKDIR 命令は、後続の命令の作業ディレクトリを設定するために使用されます。

パスが存在しない場合は、後続の命令で使用されなくても作成されます。

1つには、複数のWORKDIRが存在できます。相対パスの場合、後続の命令は前の命令から継承されます。

WORKDIR では、以前に定義された環境変数を参照できます。

  • docker run -w="" ...
  • docker run --workdir="" ...

参考リンク:

https://docs.docker.com/engine/reference/run/

https://docs.docker.com/engine/reference/builder/

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • docker run後に複数のコマンドを実行する
  • Ubuntu vps が docker をインストールし、エラーを報告します: unix:///var/run/docker.sock の Docker デーモンに接続できません。問題は解決しました
  • Docker runコマンドの使い方の詳しい説明
  • Docker Dockerデーモンに接続できません。このホストでDockerデーモンが実行されていますか?エラーの解決方法
  • docker run 起動パラメータ コマンドを表示する方法 (推奨)

<<:  JavaScript でカウントダウン効果を実装する

>>:  ドロップダウンメニュー効果を実現するJavaScript

推薦する

Nginx tp3.2.3 404 問題の解決

最近、Apache を nginx に変更しました。TP プロジェクトを実行に移すと、404 エラー...

js 実行コンテキストとスコープの概要

目次序文文章1. JavaScriptコードの実行プロセスに関連する概念2. 実行コンテキストと実行...

JavaScriptイテレータを学ぶ

目次導入js のイテレータはどのように見えるか反復プロトコル反復可能なプロトコルイテレータプロトコル...

DockerでHadoopを実行しイメージを作成する方法

車輪の再発明として、ここでは再パッケージ化を使用して Docker ベースの Hadoop イメージ...

マウスで画像を動かすJavaScript

この記事では、マウスの動きに追従する画像を実現するためのJavaScriptの具体的なコードを参考ま...

CSS3入力ボックスの実装コードはGoogleログインのアニメーション効果に似ています

CSS3を使用して、Googleログインページと同様の入力ボックスをアニメーション化します。効果1 ...

MySQLのSeconds_Behind_Masterの詳細な説明

目次マスターの後ろの秒数オリジナルの実装最終マスタータイムスタンプマスターとのクロック差他の実行時間...

VueはEchartsを使用して3次元棒グラフを実装します

この記事では、Echartsを使用して3次元棒グラフを実装するVueの具体的なコードを参考までに共有...

CSS3は水平方向の中央揃え、垂直方向の中央揃え、水平方向と垂直方向の中央揃えのサンプルコードを実装しています。

フロントエンドの担当者であれば、面接でも仕事中でも、「CSS を使用して中央揃えにする」という効果に...

VMwareがLinuxシステムをインストールして起動した後に黒い画面が表示される問題を解決する

1. 設置環境1. HUAWEI mate x CPU i5 82500u、8g メモリ、独立グラフ...

Centos7でのSambaサーバー構成(実戦)

サンバの概要Samba は、Linux および UNIX システム上で SMB プロトコルを実装する...

CSS3は赤い封筒を振る効果を実現します

赤い封筒の揺れ効果を実現するには要件があります。これまでやったことがないので、記録しておきます。ヘヘ...

デザイナーが再びハマーの公式サイトに不満を述べる

昨年、この公開書簡は大ヒットし、羅永浩氏を驚かせた。今日、著者が新しい章を発表するとは思ってもみなか...

Vueの子コンポーネントと親コンポーネントの詳細な分析

目次1. 親コンポーネントと子コンポーネント2. テンプレート分離書き込み1. テンプレートタグ2....

シンプルなショッピングカートの最も完全なコード分析を実装する JavaScript (ES6 オブジェクト指向)

この記事では、シンプルなショッピングカートを実装するためのJavaScriptの具体的なコードを参考...