從 docker 存取系統實用程式

從 docker 存取系統實用程式

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

我正在運行 PHP-fpm 和 NGINX 容器。如果我使用shell_execexec我製作的 .sh 腳本被發現並執行。

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

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

  • 我的同事說,在 Linux 中,“一切都是文件”,但我不認為我可以將這些應用程式安裝在 php-fpm 容器中並期望它們能夠工作。這聽起來也很老套,而且 php-fpm 容器可能不是相同的作業系統,未滿足要求,否則我將無法執行「感測器設定」。
  • 當然,我可以在主作業系統上運行這些應用程序,並將結果寫入文件,然後將其安裝到容器中。但再說一次;這違背了 docker 的目的嗎?
  • 我想我可以創建我自己的 PHP-fpm 版本,但這意味著每次 php 有更新時我都必須重新創建它?這聽起來也有點像駭客。

那麼,執行此操作的正確方法是什麼(不一定是上述任何一種)。


目前我有以下「工作解決方案」:

(碼頭工人組成)

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。可能還有其他選擇。

相關內容