如何解决如何在具有Docker Desktop的MacOS上的Docker容器中连接和使用相机
关于如何执行此操作的教程很多,但是我必须更改一些内容才能使其在我的macOS Catalina 10.15.7上运行,因此我想与大家分享最终使相机能够正常工作的确切条件。 Docker容器和适用于Mac的Docker Desktop。
注意:docker-machine操作可能需要一段时间,请耐心:)
注2:仅在内置相机中进行测试
-
在Mac(使用Oracle Virtual Box)上为Docker桌面安装旧版docker虚拟化引擎
- 安装Virtual Box
- 安装Virtual Box Extension pack
- 安装Docker Toolbox(强烈建议阅读this,同时也建议先备份
/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
- 显示>视频内存(最大)
- 显示>加速>启用3D加速(选中)
- 端口> USB>启用USB控制器(选中)> USB 2.0(选择)
- 共享文件夹>添加>文件夹路径= /和文件夹名称=主机根
-
重新启动macOS
-
打开一个终端( T1 ),然后键入
-
open -a XQuartz
- 如果未打开其他终端,请聚焦XQuartz应用,然后依次单击“应用程序”>“终端”
- 现在打开一个新终端( T2 )
- 在 T2 上:
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
非常感谢:
- https://github.com/GzuPark/boot2docker-webcam-mac
- https://medium.com/@jijupax/connect-the-webcam-to-docker-on-mac-or-windows-51d894c44468
- https://askubuntu.com/a/106773
- https://apple.stackexchange.com/a/277029
附加说明:
- https://apple.stackexchange.com/a/277029
- https://docs.docker.com/docker-for-mac/docker-toolbox/#docker-toolbox-and-docker-desktop-coexistence
- https://docs.docker.com/docker-for-mac/docker-toolbox/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。