
我正在建立一個 docker 容器,它應該在網頁上顯示有關係統狀態的資訊。
我正在運行 PHP-fpm 和 NGINX 容器。如果我使用shell_exec
或exec
我製作的 .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。可能還有其他選擇。