Docker
從 docker 訪問系統實用程序
我正在建構一個 docker 容器,它應該在網頁上顯示有關係統狀態的資訊。
我有一個 PHP-fpm 和 NGINX 容器正在執行。如果我使用
shell_exec
或exec
找到並執行我製作的 .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。也可能有其他選擇。