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

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

웹페이지에 시스템 상태에 대한 정보를 표시해야 하는 도커 컨테이너를 만들고 있습니다.

PHP-fpm 및 NGINX 컨테이너가 실행 중입니다. shell_exec또는를 사용하면 exec내가 만든 .sh 스크립트가 발견되어 실행됩니다.

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로 마운트할 수도 있습니다. 다른 옵션도 있을 수 있습니다.

관련 정보