docker에서 시스템 유틸리티에 액세스

docker에서 시스템 유틸리티에 액세스

웹 페이지에 시스템 상태에 대한 정보를 표시해야 하는 Docker 컨테이너를 구축 중입니다.

저는 PHP-fpm 및 NGINX 컨테이너를 실행하고 있습니다. .sh 스크립트를 사용하거나 shell_exec만들면 exec해당 스크립트가 발견되어 실행됩니다.

hddtemp그러나 합계의 출력은 표시되지 않습니다 (lm-)sensors. 이는 PHP 컨테이너에 존재하지 않기 때문일 가능성이 높습니다.

이 문제를 해결하는 올바른 방법은 무엇입니까?

  • 내 동료들은 Linux에서는 "모든 것이 파일이다"라고 말하지만 이러한 애플리케이션을 php-fpm 컨테이너에 설치하여 작동할 것이라고 기대할 수는 없습니다. 진부하게 들리기도 합니다. php-fpm 컨테이너는 동일한 OS가 아니며 요구 사항이 충족되지 않을 수도 있습니다. 그렇지 않으면 "센서 설정"을 수행할 수 없습니다.
  • 물론 이러한 애플리케이션을 기본 OS에서 실행하고 결과를 파일에 기록한 다음 컨테이너에 마운트할 수 있습니다. 그러나 이것이 도커의 목적을 무너뜨리는 것이 아닌가?
  • 내 자신의 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를 사용하면 읽기 전용으로 마운트할 수 있습니다. 다른 옵션이 있을 수 있습니다.

관련 정보