[解決済み] ドッカーENVとRUNエクスポートの比較
2022-08-11 11:24:26
質問
例えば、以下のコマンドを組み合わせたいとします。
RUN command_1
ENV FOO bar
RUN command_2
に
RUN command_1 && export FOO=bar && command_2
で変数を設定するのはどうなんだろうと思っていたのですが
RUN export
対して
ENV
は等価であった。
つまり、Dockerfileの中でこれらのコマンドの違いはあるのでしょうか?
ENV FOO bar
対
RUN export FOO=bar
どのように解決するのですか?
図にあるように
問題684
,
export
はイメージ間で持続しません。(各 Dockerfile ディレクティブは中間コンテナを生成し、中間イメージにコミットすることを忘れないでください: そのイメージはエクスポートされた値を保持しません)
ENV
になります。
で設定した環境変数が
ENV
によって設定された環境変数は、 結果のイメージからコンテナが実行されたときに持続されます。
値を表示するにはdocker inspect
を使って表示しdocker run --env <key>=<value>
.
でそれを図解していたのが問題。
RUN export PATH=$PATH:/foo/bar # from directly in builder
私の場合
docker run [img] bash -c 'echo $PATH'
を含むことはありません。/foo/bar
.
試す
を含む新しいdockerfileを作成します。
FROM centos:6
ENV FOO=foofoo
RUN export BAR=barbar
RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
次にビルドします。最後のステップの出力は
Step 4/4 : RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
---> Running in eb66196b238d
foofoo bazbaz
見ることができます。
-
FOO
は中間コンテナを通して持続します。ENV
キーワードのおかげで、中間コンテナを通して持続します。 -
BAR
は次のステップで持続しません。export
コマンドのためです。 -
BAZ
は、同じコンテナ上で変数が使われているため、正しく表示されます。
関連
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] Dockerコンテナのシェルに入るにはどうしたらいいですか?
-
[解決済み] 古いDockerコンテナを削除する方法
-
[解決済み] Dockerでイメージのクリーンビルドを強制する方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み] Docker Compose: そのようなイメージはありません
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Docker Compose: そのようなイメージはありません
-
[解決済み] docker イメージの sha256 コードはどこで確認できますか?
-
[解決済み] Docker compose、net:hostでコンテナを実行する。
-
[解決済み] Dockerです。dockerコンテナでnanoを実行する
-
[解決済み] dockerのホストOSとコンテナのベースイメージOSの関係を教えてください。
-
[解決済み] docker unauthorized: 認証が必要 - ログインに成功するとプッシュされる
-
[解決済み] Alpine Dockerfile --no-cache Vs. rm /var/cache/apk/* の利点。
-
[解決済み] Dockerの実行と作成
-
[解決済み] Linuxでdockerを停止する方法
-
[解決済み] Docker CMDを複数回使用して、複数のサービスを実行することができないのはなぜですか?