Как я могу получить доступ к своему устройству с хоста windows к контейнеру docker linux? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть рабочий стол с Windows 10 и карта захвата elgato. Я использую OpenCV для захвата кадров видео для обработки. Пока что все отлично работает:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame', gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

Следующий шаг, который я хочу сделать, - это использовать Расширения удаленной разработки . Это расширение с VS Code прекрасно работает для других моих проектов python. Это первый проект, который я пишу, использующий аппаратное устройство, но мой контейнер linux не может получить доступ к оборудованию, к которому имеет доступ хост. Я попытался найти решение, но все, что я нашел, - это способ использования параметра --device в моей команде docker с примерами, указывающими путь от устройства * nix к пути другого устройства * nix.

Я натолкнулся на сообщение от docker настольной команды, которому более двух (2) лет, в котором говорится, что вы не можете получить доступ к оборудованию с хоста windows к контейнеру linux. Я не уверен, что это все еще так, и я не уверен, есть ли у расширения удаленных контейнеров способ получить доступ к устройствам ... есть какая-то магия c, что расширение устанавливает vscode -сервер на контейнере, так что я не уверен, что это позволит аппаратный доступ?

1 Ответ

1 голос
/ 21 апреля 2020

Согласно официальной документации Microsoft , вы не можете предоставить общий доступ к устройству с хоста Windows на контейнер Linux. Тем не менее, вы можете поделиться устройством с Windows контейнером, но я думаю, это не то, что вам нужно.

Однако вы можете использовать docker -машина для общего доступа к вашим устройствам, потому что docker -машина использует виртуальную машину, такую ​​как VirtualBox, вместо своего собственного механизма для запуска контейнера. процессов.

После того, как у вас установлена ​​docker -машина, вы можете просто выполнить команду

docker-machine create --driver virtualbox <A name for the machine>

Затем откройте VirtualBox, который должен быть в ваших программах, и добавьте устройство вручную.

...