2016-12-27 22 views
1

実行中のドッカーコンテナーに環境変数を設定する必要があります。私はすでにコンテナを作成する際に環境変数を設定する方法を知っています。私が見つけたところでは、ドッカーでこれを行うための利用可能な方法はありません。ドッカーは、新しいバージョン1.13で何かを追加する予定です。実行中のドッカーコンテナーの環境変数を設定

しかし私は今、私のために働いていない人を管理できる人がいることがわかりました。私は、次の方法を試してみましたが、ME-

docker exec -it -u=root test /bin/bash -c "export port=8090" 

は、スクリプトを使用して/etc/bash.bashrcし、それに

全体を構成する
docker exec -it test /bin/bash -c "source /etc/bash.bashrc" 

を調達するために、「= 8090輸出港」をエコーするために動作しませんでしたスクリプトで実行し、ホストから実行することもできませんでした。ホストからスクリプトを実行している間は、「export port = 8090」または「source /etc/bash.bashrc」または「source /root/.bashrc」以外のコマンドはすべて正常に実行されます。

私はユーザ( " - u = root")を設定してもホストからのソースファイルがdockerコンテナで動作しない理由を誰でも説明できますか?誰も私がこれを解決するのを助けることができますか?私がコンテナの中からファイルを取得するとき、それは完全に機能します。しかし、私の場合は私が

NOTEホストマシンからそれをしなければならない:、私はドッキングウィンドウ1.12を使用していますが、Ubuntuの中で上記試さ:16.04とUbuntu:14.04

+0

をチェック! 'docker exec -it mydocker bash'を試してみましたか?また、まず最初のコマンドでコンテナに入り込み、envを設定してソースを実行します。 – cen

+0

私はコンテナ(/ bin/bash)に行き、変数が存在するかどうかを判断するために環境変数をチェックします。私は言及すべきだった、私のケースでは、私はコンテナの中にファイルを取得することができません。コンテナの内部からの調達は完全に機能することは言及しないでください。私は私の質問を編集しました。 –

+0

もう1つのことは、コマンドをbashファイルに入れ、そのファイルをdockerでコンテナにコピーし、代わりに実行するか、アプリケーションで実行させることです。あなたの他のコメントに基づいて、あなたのスクリプトを構成するための他の方法を見つける方がいいでしょう。動的構成は、通常env varsで行われるものではありません。 – cen

答えて

-1

実行中のコンテナに環境変数を提供する方法が見つかりました。あなたのドッカーエンジンを拳銃でアップグレードしてください。私はV1.12.5を使用しています。

#!/bin/bash 

echo "export VAR1=VAL1 
export VAR2=VAL2" >> /etc/bash.bashrc 
source /etc/bash.bashrc 

変数 - 環境とスクリプトを作成今すぐコンテナを起動します。ここでは、 'テストでは、' コンテナ名です:

docker run -idt --name=test ubuntu 

は、コンテナにスクリプトをコピーします。

docker cp script.sh test:/ 

スクリプトを実行します:

docker exec -it test /bin/bash -c "/script.sh" 
があなたのコンテナを再起動し

docker restart test 

コンテナに行く彼女LL

docker exec -it test /bin/bash 

あなたはENVが設定されていないことを知っていますどのように変数

echo $VAR1 
0

をあなたが実行中のプロセスを持っている場合dockerの環境変数を変更しようとしているため、実行中のプロセスが動的に変更されます。これは動作しません。プロセスの環境変数は、起動時に設定されます。あなたはそれを克服する方法hereを見ることができますが、私はそれが行く正しい方法だとは思わない。

私は代わりに、ファイルが定期的に読み取り(またはリッスン)する構成ファイルを持っています。そして、あなたが構成を変更したいときは、ファイルを変更してください。

これがあなたのシナリオではない場合は、あなたのシナリオを説明してください。

+0

コンテナ内に実行中のプロセスがありません。私の場合は、コンテナを作成する際に環境変数の一部しか知りません。しかし、後で私はいくつかのスクリプトで使用される環境変数をいくつも取得し、このスクリプトは後で自分のアプリケーション(ドッカーホストマシンで実行されています)から実行され、コンテナ内で目的のプロセスを開始します。 –

+0

@zamansakibコンテナはプロセスなしでは実行できません。あなたの例では、プロセスとしてbashを実行しています。 – lvthillo

+0

@ lorenzvth7-そうです。実際に更新したい環境変数を使っているプロセスがないと言ってみました。それを指摘してくれてありがとう –

関連する問題