序文 Docker はコンテナの環境変数を設定できます。設定方法は 2 つあります。
コンテナ内で有効な環境変数を表示するには [root@localhost ~]# docker exec 984 env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/java/default/bin TERM=xterm AUTHORIZED_KEYS=**なし** JAVA_HOME=/usr/java/default HOME=/ルート ... コンテナによって開始されたプロセス、つまり ENTRYPOINT+CMD では、対応するシステム ライブラリを通じてコンテナの環境変数を取得できます。 コンテナに入り、プロセスの環境変数を表示します。/proc で表示できます。 cat /proc/{pid}/environ そのため、コンテナ内のプロセス1の環境変数を参照することで、コンテナ内の環境変数も取得できます。 cat /proc/1/environ |tr '\0' '\n' コマンドを実行すると表示できます。 [root@localhost ~]# docker exec -it 984 cat /proc/1/environ |tr '\0' '\n' PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/java/default/bin TERM=xterm AUTHORIZED_KEYS=**なし** JAVA_HOME=/usr/java/default HOME=/ルート ... 一般的に、親プロセスから生成された子プロセスは、デフォルトで親プロセスの環境変数を継承します。したがって、コンテナ内の各プロセスの環境変数はほぼ同じである必要があります。もちろん、特殊なケースでは環境変数もリセットされ、誤解や問題が生じることがあります。以下は、コンテナ内の一般的な状況の説明です。 よくある問題と解決策 別のユーザーに切り替えると環境変数が消える コンテナでは、起動後に別のユーザーに切り替えます。たとえば、 これは、ユーザーを切り替えると環境変数がリセットされるためです。そのため、以前の環境変数を継承するには、 help を使用すると、su の関連パラメータの説明を表示できます。 [root@adworderp-03a38d62-4103555841-m81qk /]# su --help 使用法: su [OPTION]... [-] [USER [ARG]...] 有効なユーザー ID とグループ ID を USER のものに変更します。 ... -m, --preserve-environment HOME、SHELL、USER、LOGNAME をリセットしない 環境変数 -p は -m と同じ ... コンテナ内の文字化け 一部の企業がコンテナに移行すると、印刷されたログが文字化けすることが多いと報告されています。一般的な理由は、ロケールが正しく設定されていないことです。 現在のコンテナのロケールは locale を通じて表示できます。設定されていない場合は、通常は POSIX になります。 locale -a を使用すると、現在のコンテナでサポートされている言語環境を表示し、必要に応じて設定できます。 この問題を完全に解決したい場合は、コンテナまたはイメージを起動するときに環境変数に LANG={xxx} を追加し、適切な言語を選択して、それによって引き起こされるコード文字化けの問題を回避するのが最善の方法です。 ssh環境変数の問題 コンテナで sshd を有効にすると、接続とトラブルシューティングが容易になり、日常的な操作やメンテナンス操作も容易になります。 しかし、コンテナに入るユーザーの多くは、Docker の起動時に設定された環境変数が env コマンドでは正常に表示されないことに気づきます。 その主な理由は、ssh がユーザーの接続を確立すると環境変数がリセットされるためです。 これによって発生する最大の問題は、ssh 経由で開始されたコンテナ プロセスが、コンテナの起動時に設定された環境変数を取得できないことです。 原理を理解すれば、この問題を解決する簡単な方法があります。つまり、ssh 接続後のセッションにコンテナの環境変数をリセットすることができます。 次に、/etc/profile に数行のコードを追加し、プロセス 1 からコンテナー自体の環境変数を取得し、ループで環境変数をエクスポートするだけです。 以下は単純な for ループの実装です。 `cat /proc/1/environ |tr '\0' '\n'` 内の項目について する $item をエクスポートする 終わり もちろん、より簡潔なコマンド、export $(cat /proc/1/environ |tr '\0' '\n' | xargs) もあり、同じ効果が得られます。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
>>: CocosCreatorでJSZip圧縮を使用する方法
目次1. axiosをインストールする2. アクシオスの使用1.ホームページでaxiosを参照する2...
既存のビデオ プレーヤーがニーズを満たせない場合は、ビデオを自分でカプセル化する必要があります。ビデ...
目次1. はじめに2. スケジューラの基本概念2.1. 実行キュー (rq) 2.2 スケジューリン...
今日は Docker でのネットワーク設定を試し、後で忘れないようにプロセスを記録しました。 (シス...
・【シーン説明】 HTTP1.1 以降、HTTP プロトコルは永続的な接続 (長い接続とも呼ばれます...
この記事の例では、ショッピングカート機能を実装するためのvuexの具体的なコードを参考までに共有して...
目次1. ユニオンタイプ2. クロスオーバータイプ3. 型保護3.1 カスタム型保護3.2 保護の種...
最近の問題としては、次のような現象があります。システムには、docker run コマンドを継続的に...
今日、入力イベントに関するブログ投稿を見て、気まぐれで関連情報を整理してみました。イベント:関数 c...
最新の Ubuntu Server バージョンを使用している場合、ようこそメッセージに、Ubuntu...
この記事では、カスタムツリーコンポーネントを再帰的に実装するVueの具体的なコードを参考までに共有し...
Docker と Docker Machine の違いDocker はクライアント サーバー アーキ...
序文皆さんは Linux で top コマンドを使ったことがあると思います。私は Linux に触れ...
目次1. スクリプトタグを使用してファイルをインポートする1. ローカルファイルをインポートする2....
<br />Web ページによっては、サイズは大きくないように見えても開くのに非常に時間...