Docker

從 docker 訪問系統實用程序

  • April 2, 2020

我正在建構一個 docker 容器,它應該在網頁上顯示有關係統狀態的資訊。

我有一個 PHP-fpm 和 NGINX 容器正在執行。如果我使用shell_execexec找到並執行我製作的 .sh 腳本。

但是,它不顯示 和 的hddtemp輸出(lm-)sensors。很可能是因為這些在 PHP 容器中不存在。

解決此問題的正確方法是什麼?

  • 我的同事說,在 linux 中,“一切都是文件”,但我不認為我可以將這些應用程序安裝在 php-fpm 容器中並期望它們能夠工作。這聽起來也很老套,而且 php-fpm 容器可能不是同一個作業系統,沒有滿足要求,或者我無法執行“感測器設置”。
  • 當然,我可以在主作業系統上執行這些應用程序,並將結果寫入一個文件,然後將其掛載到容器中。但又一次;這違背了碼頭工人的目的?
  • 我想我可以創建自己的 PHP-fpm 版本,但這意味著每次有 php 更新時我都必須重新創建它?這聽起來也有點像 hack。

那麼,這樣做的正確方法是什麼(不必是上述任何一種)。


目前我有以下“工作解決方案”:

(碼頭工人撰寫)

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,我覺得這是錯誤的,但它需要訪問磁碟資訊?

缺少的不是命令。您可以將命令的副本放入容器中。或者有等價的。缺少的是訪問他們需要的資訊。

您可以將我的安裝/proc從主機添加到容器中。小心,因為這會打破所有的隔離。您可能能夠以只讀方式安裝它,並且 hidepid=2。也可能有其他選擇。

引用自:https://unix.stackexchange.com/questions/577229