序文 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圧縮を使用する方法
MySQLは重複データを処理します一部の MySQL テーブルには重複レコードが含まれている場合があ...
目次1. インデックス失敗の理由2. インデックスの秩序が崩れる状況を見てみましょう。 - インデッ...
フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...
echarts コンポーネントの公式ウェブサイト アドレス: https://echarts.apa...
DockerでGit環境を構成する仕事上、Docker 環境で GitLab リポジトリを操作する必...
効果: <div class="imgs"> <!-- 背景画...
参考までに、JavaScriptを使用してドロップダウンメニューを実装します。具体的な内容は次のとお...
MySQL での置換例の詳細な説明replace into は insert と似ていますが、rep...
問題の説明MySQL が正常に起動しました。以下に示すように、 ps -ef |grep mysql...
文法規則 列名を選択 テーブル名1から INNER JOIN テーブル名2 ON テーブル名1.列名...
序文MySQL バージョン 3.23.44 以降では、InnoDB エンジン タイプのテーブルは外部...
この記事では、VMware WorkstationにKylinをインストールする方法を参考までに紹介...
サーバーサイドレンダリング (SSR) を使用する理由検索エンジンのクローラーが完全にレンダリングさ...
W3C は最近、「 XHTML Basic1.1 」と「 Mobile Web Best Prac...
序文MySQL のマスター/スレーブ レプリケーション関係は、厳密には「同期」または「マスター/スレ...