Как получить температуру малинки в докере?

Для того чтобы получить температуру Raspberry Pi (малинки) внутри контейнера Docker, вам понадобится способ доступа к информации о температуре из операционной системы хоста. Docker изолирует контейнеры и предоставляет им собственное виртуальное окружение, что может затруднить доступ контейнера к физическим характеристикам хост-машины.

Одним из способов решить эту проблему является передача информации о температуре на хост-машину и предоставление доступа к ней из контейнера. Ниже приведен пример, который показывает, как можно получить температуру Raspberry Pi и передать ее в контейнер:

Шаг 1: Создайте скрипт на хост-машине, который будет считывать данные о температуре. Пример скрипта в Python будет выглядеть следующим образом:

import subprocess

def get_cpu_temperature():
    temperature = subprocess.check_output("vcgencmd measure_temp", shell=True)
    return temperature.decode().split('=')[1].split("'")[0]

if __name__ == "__main__":
    print(get_cpu_temperature())

Шаг 2: Установите Docker на хост-машину и создайте Docker-образ:

FROM python:3.9

COPY temperature.py .

CMD [ "python", "temperature.py" ]

Шаг 3: Соберите Docker-образ с помощью команды docker build -t temperature-image .

Шаг 4: Запустите контейнер, предоставив ему доступ к информации о температуре:

docker run -it -v /opt/vc:/opt/vc temperature-image

Где /opt/vc - это путь к библиотекам, которые необходимы для работы команды vcgencmd measure_temp.

Теперь, когда контейнер работает, он может вызывать скрипт и получать данные о температуре Raspberry Pi. Эти данные могут быть использованы для мониторинга температуры или других операций внутри контейнера.

Обратите внимание, что этот способ предоставляет доступ контейнера к информации о температуре хост-машины, но предоставляет это только для чтения. Если вам требуется возможность управлять температурой или изменять поведение системы на основе ее значений, вам может понадобиться дополнительная настройка и привилегии в контейнере.