2016-07-26 14 views
2

jwilders nginx reversre proxyでアクセス可能な複数のドッカーコンテナを持つサーバーをセットアップしました。コンテナを実行するときには、環境変数VIRTUAL_HOSTを設定できます。私は、コンテナが開設された後、これらの更新方法を理解しようとしていました。Docker - コンテナの環境変数を更新する

ソリューションはhere投稿:

あなただけ

/var/lib/docker/containers/[container-id]/config.json

にドッキングウィンドウデーモンと変更コンテナの設定を停止するドッカデーモンを停止する必要がありますが、私はないことを好むだろうそれに頼らなければならない。

here、ドッキングウィンドウは、インスタンス情報を維持するためにコミット使用しています。

は、あなたが新しいイメージとしてそれをコミットすることによって、 容器の中にファイルシステムの変更を保持-can-、と述べました。

$ docker run -it --name=foobar alpine sh 
$ docker commit foobar mynewimage 
$ docker rm foobar 
$ docker run -it --name=foobar mynewimage sh 

これはまた、単に環境変数を変更するためのトップ上のビットのようですけど。

私はdocker updateを調べましたが、これは主にコンテナリソースを再構成するためのものです。

もちろん、他の選択肢がない場合は、上記のいずれかの方法を使用しますが、誰かが他の解決策を見つけたのかどうか疑問に思っていますか?

+0

「ENV abc 123」または「ENV abc = 123 def = 456」とDockerfileを更新して再構築/再起動することをお勧めします。 – user2915097

答えて

5

新しい環境変数でコンテナを破棄し、新しい環境変数をdocker run -e ...で開始します。実行中のプロセスで環境変数を変更する場合と同じです。新しいプロセスを再起動するという概念を、新しいコンテナを破棄して再作成するという概念に置き換えてください。

コンテナに失われないファイルがある場合は、ボリュームを使用する必要があります。コンテナファイルシステムの他の内容は、使い捨てか不変かのいずれかでなければなりません。

+0

そうです、本当に、デフォルトでコンテナの再作成が可能です。私はボリュームを使用しているので、私は最後にやりましたが、一種のランニングパッチとしてそうする方法があればもっと興味がありましたか? –

+1

Dockerは実行中のコンテナ内の環境変数を変更する方法を提供しません。これは、OSが実行中のプロセス内の環境変数を変更する方法を提供しないためです。あなたは破壊して再作成する必要があります。 – BMitch

関連する問題