运行 X 服务器使用 Docker
Running X server using Docker
我一直在努力使以下方法正常工作但没有成功:
Dockerfile
FROM ubuntu:latest
#To install without any interactive dialogue
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
# Installing Nautilus File Manager
RUN apt-get install nautilus -y
CMD ["nautilus"]
然后 运行:
sudo docker build -t nautilus-ubuntu .
sudo docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix nautilus-ubuntu
我得到的错误是:
Unable to init server: Could not connect: Connection refused
这似乎以前被问过很多,但我已经尝试了一个小时我能遇到的一切,除了 xhost +(这是不安全的,我不想使用)之外别无他法这项工作。
需要注意的一件事是,我试图让它以一种我可以构建它并立即启动目标 GUI 应用程序的方式工作,而无需登录到 bash 会话并执行进一步的事情。
我找到了答案here.
应该将这些添加到 Dockerfile 中:
# Arguments picked from the command line!
ARG user
ARG uid
ARG gid
#Add new user with our credentials
ENV USERNAME ${user}
RUN useradd -m $USERNAME && \
echo "$USERNAME:$USERNAME" | chpasswd && \
usermod --shell /bin/bash $USERNAME && \
usermod --uid ${uid} $USERNAME && \
groupmod --gid ${gid} $USERNAME
USER ${user}
WORKDIR /home/${user}
然后,创建 xauth 文件:
xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f /tmp/.docker.xauth nmerge -
然后,运行 使用:
docker build --build-arg user=$USER --build-arg uid=$(id -u) --build-arg gid=$(id -g) -t nautilus-ubuntu .
docker run -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/.docker.xauth:/tmp/.docker.xauth:rw -e XAUTHORITY=/tmp/.docker.xauth -t nautilus-ubuntu
我一直在努力使以下方法正常工作但没有成功:
Dockerfile
FROM ubuntu:latest
#To install without any interactive dialogue
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
# Installing Nautilus File Manager
RUN apt-get install nautilus -y
CMD ["nautilus"]
然后 运行:
sudo docker build -t nautilus-ubuntu .
sudo docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix nautilus-ubuntu
我得到的错误是:
Unable to init server: Could not connect: Connection refused
这似乎以前被问过很多,但我已经尝试了一个小时我能遇到的一切,除了 xhost +(这是不安全的,我不想使用)之外别无他法这项工作。
需要注意的一件事是,我试图让它以一种我可以构建它并立即启动目标 GUI 应用程序的方式工作,而无需登录到 bash 会话并执行进一步的事情。
我找到了答案here.
应该将这些添加到 Dockerfile 中:
# Arguments picked from the command line!
ARG user
ARG uid
ARG gid
#Add new user with our credentials
ENV USERNAME ${user}
RUN useradd -m $USERNAME && \
echo "$USERNAME:$USERNAME" | chpasswd && \
usermod --shell /bin/bash $USERNAME && \
usermod --uid ${uid} $USERNAME && \
groupmod --gid ${gid} $USERNAME
USER ${user}
WORKDIR /home/${user}
然后,创建 xauth 文件:
xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f /tmp/.docker.xauth nmerge -
然后,运行 使用:
docker build --build-arg user=$USER --build-arg uid=$(id -u) --build-arg gid=$(id -g) -t nautilus-ubuntu .
docker run -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/.docker.xauth:/tmp/.docker.xauth:rw -e XAUTHORITY=/tmp/.docker.xauth -t nautilus-ubuntu