我正试图用opencv创建一个docker图像,以便显示视频。我有以下Dockerfile:
FROM python:3
ADD testDocker_1.py /
ADD video1.mp4 /
RUN pip install opencv-python
CMD [ "python", "./testDocker_1.py" ]
以及以下python脚本:
import cv2
import os
if __name__ == '__main__':
file_path = './video1.mp4'
cap = cv2.VideoCapture(file_path)
ret, frame = cap.read()
while ret:
ret, frame = cap.read()
if ret:
cv2.imshow('Frame Docker', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
因此,首先我构建了图像:
$ sudo docker build -t test1 .
当我运行容器时,问题来了:
$ sudo docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix test1
No protocol specified
: cannot connect to X server :1
谨致问候。
试试这个
xhost +
sudo docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix test1
虽然它可以解决这个特定的用例,但您需要注意以下几点:
基本上,xhost+允许每个人使用您的主机x服务器
参考
提供了一个更好且推荐的解决方案