我的 Dockerfile 看起来像这样:
FROM centos:7
RUN mkdir -p /tmp/app_config
WORKDIR /tmp/app_config
COPY app/ /tmp/app_config
COPY ./app_init.sh /tmp/app_config/
…
CMD ["./app_init.sh"]
app_init.sh
有这个。
#!/bin/bash
su - appuser -c /tmp/app_config/main &
当我运行这个容器时docker run -it app/two:0.3.4
我得到Cannot open display :
但是,当我使用执行这个容器时docker run --rm --privileged -ti -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup d568052b2e7c /usr/sbin/init
它要求我登录,然后我可以手动运行此命令来启动我的应用程序:su - appuser -c /tmp/app_config/main &
,就像在虚拟机中一样。
问题有没有一种方法可以在不运行特权容器的情况下运行 X Window 应用程序?
此部署应该在 Kubernetes 集群上运行,因此不可能在那里运行特权容器。我知道这不是最好的方法,但我们有一些严格的要求,因此寻找一些可能性。