【发布时间】:2022-12-12 14:19:34
【问题描述】:
我正在尝试在 Docker 容器中运行 Xvfb,但失败并出现以下错误:
$ Xvfb :0 -nolisten tcp -screen 0 1024x768x24
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
(EE)
Fatal server error:
(EE) Cannot establish any listening sockets - Make sure an X server isn't already running(EE)
根据 strace,它试图在 /tmp/.X11-unix/X0 绑定一个 UNIX 套接字:
bind(4, {sa_family=AF_UNIX, sun_path=@"/tmp/.X11-unix/X0"}, 20) = -1 EADDRINUSE (Address already in use)
但是,容器中不存在该文件(由ls -l /tmp/.X11-unix 验证)。
如果我使用不同的屏幕编号,例如:1,程序就会成功。
此容器以--network host模式运行,/tmp/.X11-unix/X0做存在于主机上。这是否会产生某种问题,即容器和主机不能在同一路径上拥有 UNIX 套接字,即使该套接字在容器中不可见?
【问题讨论】:
标签: docker unix-socket xvfb xserver