为什么我不能 运行 X11 应用程序?

why can i not run a X11 application?

因此,正如标题所述,我是 docker 新手。 我下载并安装了 archlinux/base 容器,到目前为止它似乎运行良好。我已经设置了一些东西,并安装了一些软件包(包括 xeyes),现在我想启动 xeyes。为此,我通过 运行 docker ps 找到了 CONTAINER ID,然后在我的 exec 命令中使用了该 ID,现在看起来像:

$ docker exec -it -e DISPLAY=$DISPLAY 4cae1ff56eb1 xeyes
Error: Can't open display: :0

为什么还是不行?另外,如何在不丢失其配置状态的情况下停止我的 运行 实例?以前我已经退出容器,当我重新启动它时,我所有的配置和软件安装都消失了。这是不希望的。我该如何正确处理?

关于 X 显示器,您需要共享 xserver 套接字(注意docker 无法绑定安装 volume exec) 并设置 $DISPLAY(示例 Dockerfile):

FROM archlinux/base

RUN pacman -Syyu --noconfirm xorg-xeyes

ENTRYPOINT ["xeyes"]

构建 docker 图像:docker build --rm --network host -t so:57733715 .

运行 docker 容器:docker run --rm -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY so:57733715

注意:如果出现 No protocol specified 错误,您可以使用 xhost + 禁用主机检查,但有一个警告(man xhost了解更多信息)。