我希望在台式机上的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套接字将绑定到容器中的相同位置。这是一条红鲱鱼吗?