暴露X时Docker和Docker Compose的不同行为

暴露X时Docker和Docker Compose的不同行为,docker,docker-compose,Docker,Docker Compose,我正在尝试在docker容器中运行X应用程序并显示GUI。 我使用Docker Compose得到了这个结果,但是当使用Docker run从命令行运行同一个容器时,它失败了 我创建了一个简单的示例来演示正在发生的事情: Dockerfile: FROM ubuntu:latest RUN apt-get update && apt-get install -y x11-apps RUN useradd -ms /bin/bash xvis USER xvis WORKDIR

我正在尝试在docker容器中运行X应用程序并显示GUI。
我使用Docker Compose得到了这个结果,但是当使用
Docker run
从命令行运行同一个容器时,它失败了

我创建了一个简单的示例来演示正在发生的事情:

Dockerfile:

FROM ubuntu:latest

RUN apt-get update && apt-get install -y x11-apps
RUN useradd -ms /bin/bash xvis
USER xvis
WORKDIR /home/xvis
docker-compose.yml:

version: "3"
services:
  xeyes-test:
    build: .
    command: xeyes
    volumes:
      - /tmp/.X11-unix:/tmp/.X11-unix
    environment:
      DISPLAY: unix:0
docker compose-up--build
按预期打开xeyes GUI

docker构建-t xeyes docker测试。

docker-run--rm-e显示:unix:0-v/tmp/.X11 unix:/tmp/.X11 unix xeyes docker-test xeyes


给出错误:
错误:无法打开显示:

docker运行命令应为
-e display=unix:0
=


如果这不能解决问题,请参阅:

我(一致地)从两个方面得到错误。
docker run
命令应该是
-e DISPLAY=unix:0
(而不是
)。如果这不能解决问题,请看:谢谢@DazWilkin,这就是问题所在。这两个系统的语法略有不同,这让我很反感。如果你把你的评论作为回答,我很乐意接受。很高兴它有帮助!