Docker 用于 windows 上基于 GUI 的环境

Docker for GUI-based environments on windows

我正在尝试为 opencv 社交距离检测项目制作一个 docker 文件作为学校项目的要求

我遇到的问题是在基于 GUI 的环境中制作 docker 运行

我设法通过在 运行 命令

中添加 fellow 行使其在 linux 上工作

-e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:ro

完整命令

sudo docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:ro social-distance-detection -y https://youtu.be/hTUyzF4v9KA

但它在 windows

上不起作用

我应该将哪个命令添加到 docker 运行 以便它可以 运行 on windows? 有没有办法让它在不添加任何额外行的情况下工作?

有Docker文件

FROM ubuntu:20.04
FROM python:3.8

LABEL maintainer="muhammed akyuzlu ***@gmail.com"

ADD Social-distance-detection.py / 
ADD coco.names / 
ADD yolov4.cfg /    
ADD yolov4.weights /  




RUN apt-get update \
    && apt-get install -y \
    python3-pyqt5 \
    build-essential \
    cmake \
    git \
    wget \
    unzip \
    yasm \
    pkg-config \
    libswscale-dev \
    libtbb2 \
    libtbb-dev \
    libjpeg-dev \
    libpng-dev \
    libtiff-dev \
    libavformat-dev \
    libpq-dev \
    xserver-xephyr\
    && rm -rf /var/lib/apt/lists/*

RUN apt-get update -y \ 
    && apt-get install python3-pip -y \
    && pip install pafy \
    && pip install numpy  \
    && pip install youtube-dl \
    && pip install numpy \
    && pip install opencv-python 


ENTRYPOINT ["python","./Social-distance-detection.py"] 

这是我第一次使用 Docker 所以你可以找到一些废话:)

首先,清理您的 Dockerfile。我会建议:

FROM python:3.8

LABEL maintainer="muhammed akyuzlu ***@gmail.com"

COPY Social-distance-detection.py / 
COPY coco.names / 
COPY yolov4.cfg /    
COPY yolov4.weights /  

RUN apt-get update && \
    apt-get -y install \
    build-essential \
    cmake \
    git \
    wget \
    unzip \
    yasm \
    pkg-config \
    libswscale-dev \
    libtbb2 \
    libtbb-dev \
    libjpeg-dev \
    libpng-dev \
    libtiff-dev \
    libavformat-dev \
    libpq-dev \
    xserver-xephyr && \
    apt-get -y clean && \
    rm -rf /var/lib/apt/lists/* && \
    pip install --no-cache-dir pafy \
    numpy  \
    youtube-dl \
    PyQt5 \
    opencv-python 

ENTRYPOINT [ "python" , "./Social-distance-detection.py" ] 

我不会重复我对你的问题的评论,但至于其他更改 - 你应该使用 COPY,而不是 ADD,除非你需要 ADD-specific 功能.您应该只 运行 apt-get install 一次,然后清理所有临时文件和缓存。您应该 运行 pip--no-cache-dir 切换以避免首先创建不必要的缓存。

现在开始回答您的实际问题。正如@David Maze 建议的那样,您需要安装 X Window 服务器,然后将其配置为接受所有连接,最后 运行:

docker run -e DISPLAY=192.168.1.68:0.0 social-distance-detection -y https://youtu.be/hTUyzF4v9KA

用您主机的 IP 地址替换 192.168.1.68

过程在this article中有详细描述。