我不确定这是否可行,但有没有办法在Docker容器内访问我的相机?我没有使用外置摄像头,而是内置在我的Mac中。
答案 0 :(得分:7)
我不确定标志量(-v
)是最佳做法。
根据jfrazelle的github,为许多图形应用程序(如chromium,skype,spotify等)编写了许多Dockerfile和docker run
的docker工程师,你应该使用的标志和参数是{{1} }。
答案 1 :(得分:0)
您可以尝试使用-v标志转发网络摄像头设备
像
这样的东西 sudo docker run -d -p 55555:22 --privileged -v /dev/video0:/dev/video0 testimage
要列出连接到USB的所有设备,请使用lsusb
;列出连接到PCI的所有设备使用lspci
答案 2 :(得分:0)
HTML5视频作品
<video id="video" autoplay>
No video support in your browser...
</video>
Java脚本
<script type="text/javascript">
window.URL =window.URL || window.webkitURL;
// Get access to the camera!
if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
// Not adding `{ audio: true }` since we only want video now
navigator.mediaDevices.getUserMedia({ video: true }).then(function(stream) {
//video.src = window.URL.createObjectURL(stream);
video.srcObject = stream;
video.play();
});
}
</script>
您可以通过以下方式进行测试
$ docker run -d -p 127.0.0.1:8000:8000 --name html5cam yassermog/html5_cam_docker
答案 3 :(得分:0)
在MacOS上,可能有些棘手:
在Mac(使用Oracle Virtual Box)上为Docker桌面安装旧版docker虚拟化引擎
/usr/local/bin/docker*
)
/usr/local/bin/docker
和/usr/local/bin/docker-compose
链接到Docker桌面二进制文件(/Applications/Docker.app/Contents/Resources
),而不是Docker Toolbox。docker ps -a
和docker images
应该显示您在Docker Desktop中已经拥有的内容,docker-machine ls
应该不会出现错误 brew install socat
brew install xquartz
设置:“ XQuartz首选项”>“安全性”>选中“全部允许”(允许来自网络客户端的连接)
defaults write org.macosforge.xquartz.X11 enable_iglx -bool true
IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
xhost + $IP
docker-machine create -d virtualbox --virtualbox-cpu-count=4 --virtualbox-memory=4096 --virtualbox-disk-size=1000000 --virtualbox-boot2docker-url https://github.com/gzupark/boot2docker-webcam-mac/releases/download/18.06.1-ce-usb/boot2docker.iso default
docker-machine stop default
打开Virtual Box应用并配置刚刚用docker-machine创建的VirtualBox VM
重新启动macOS
打开一个终端( T1 ),然后键入
open -a XQuartz
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
lsof -i tcp:6000
检查拥有进程是X11.bin,否则杀死拥有进程并尝试再次运行socat(始终在 T2 上) 再次在 T1 上
IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
xhost + $IP
docker-machine start default
eval $(docker-machine env default)
vboxmanage list webcams
.1
)vboxmanage controlvm default webcam attach .1
(您可能需要再次打开VirtualBox,双击您的VM,这将打开系统视图,然后单击“设备”>“网络摄像头”>“ <选择您的摄像头>)
您现在应该可以在容器中访问相机了。
使用
测试XQuartzdocker run --rm -it -e DISPLAY=$IP:0 gns3/xeyes
使用
测试相机docker run --rm -it -e DISPLAY=$IP:0 --device=/dev/video0:/dev/video0 -v /tmp/.X11-unix:/tmp/.X11-unix ubuntu
apt update && apt install -y streamer
streamer -f jpeg -o image.jpeg
提示
使用VBoxManage controlvm thevm acpipowerbutton
非常感谢:
附加说明: