dockerからシステムユーティリティにアクセスする

dockerからシステムユーティリティにアクセスする

Webページにシステムの状態に関する情報を表示する必要があるDockerコンテナを構築しています。

私はPHP-fpmとNGINXコンテナを実行しています。 .shスクリプトを使用またはshell_exec作成するとexec、そのスクリプトが検出され実行されます。

hddtempただし、合計の出力は表示されません(lm-)sensors。これは、PHPコンテナに存在しないためである可能性が高いです。

この問題を解決する正しい方法は何ですか?

  • 私の同僚は、Linuxでは「すべてがファイルです」と言っていますが、これらのアプリケーションをphp-fpmコンテナにインストールして動作することを期待することはできません。真剣に聞こえることもあります。 php-fpmコンテナは同じOSではなく、要件を満たしていない可能性があります。それ以外の場合は「センサー設定」を実行できません。
  • もちろん、これらのアプリケーションをプライマリOSで実行し、結果をファイルに書き込んでコンテナにマウントすることもできます。しかし、これがドッカーの目的を崩すのではありませんか?
  • 私自身のPHP-fpmバージョンを作成できるようですが、もしそうなら、PHPが更新されるたびにそれを再作成する必要がありますか?これもハッカーのように聞こえます。

したがって、これを行う正しい方法は何ですか(必ずしも上記の方法の1つである必要はありません)。


現在、次のような「作業ソリューション」があります。

(港湾ワーカーで構成)

php:
image: php:7-fpm
privileged: true
volumes:
    - /usr/sbin/hddtemp:/usr/sbin/hddtemp
    - /etc/hddtemp.db:/etc/hddtemp.db

(PHP)

var_dump(shell_exec("/usr/sbin/hddtemp /dev/sda 2>&1"));

しかし、この場合、dockerで「特権」モードでPHPを実行する必要がありますが、これは間違っているようですが、diskinfoにアクセスする必要がありますか?

ベストアンサー1

コマンドが足りないわけではありません。コマンドのコピーをコンテナに入れることができます。またはそれに相当するもの。不足しているのは、必要な情報を得ることです。

/procホストシステムからコンテナに追加できます。すべての隔離が壊れる可能性があるので注意してください。。 hidepid=2 を使用すると、読み取り専用でマウントできます。他のオプションがあります。

おすすめ記事