如何在Docker容器和桌面之间获得X11套接字连接

时间:2019-04-21 19:36:03

标签: docker x11

我希望在台式机上的Docker中运行Pycharm社区。我已经创建了一个Dockerfile(如下),并且看到它在Mac上可以正常工作。

FROM debian:buster-slim
ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y \
    ca-certificates \
    curl \
    apt-utils \
    dirmngr \
    gnupg \
    libasound2 \
    libdbus-glib-1-2 \
    libgtk-3-0 \
    libxrender1 \
    libx11-xcb-dev \
    libx11-xcb1 \
    libxt6 \
    xz-utils \
    --no-install-recommends \
    && rm -rf /var/lib/apt/lists/*

ENV HOME /home/user
RUN useradd --create-home --home-dir $HOME user \
    && chown -R user:user $HOME

ENV LANG C.UTF-8

RUN apt-get update && \
    apt-get install -y python-pip \
      vim \
      wget \
      x11-utils \
      xfonts-base \
      xpra


# install PyCharm
RUN cd / && \
    wget -q http://download.jetbrains.com/python/pycharm-community-2019.1.1.tar.gz && \
    tar xvfz pycharm-community-2019.1.1.tar.gz && \ 
    rm pycharm-community-2019.1.1.tar.gz 

USER user

CMD [ "/pycharm-community-2019.1.1/bin/pycharm.sh"]

但是,当我尝试在Ubuntu上运行时,我从Pycharm代码中得到了X11错误:

  

启动失败:无法初始化图形环境

     

java.awt.AWTError:无法使用':1'连接到X11窗口服务器   DISPLAY变量的值。在   java.desktop / sun.awt.X11GraphicsEnvironment.initDisplay(本机方法)

调用容器的命令是:

docker run -it --rm    -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=${DISPLAY} <<image_id>>

我在DISPLAY变量上尝试了许多变体(例如 unix $ DISPLAY ),但没有一个奏效。

更新:

我跑了

docker run -it --rm    -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=${DISPLAY} --entrypoint /bin/sh <<image_id>>

进入容器,然后运行:

$ ls -l /tmp
total 0

我很困惑-我以为驻留在主机中的X11套接字将绑定到容器中的相同位置。这是一条红鲱鱼吗?

0 个答案:

没有答案