如何使用 vnc 在 ubuntu 中运行 docker 镜像?

Ale*_*lex 4 ubuntu vnc docker

为了检查在 docker 镜像中运行的 selenium 测试,我尝试设置一个 VNC 来验证测试期间发生的情况。

我正在按照此处提出的建议创建一个新的 docker 映像,并在 中添加以下附加行Dockerfile

RUN     apt-get install -y x11vnc 
RUN     mkdir ~/.vnc
RUN     x11vnc -storepasswd 1234 ~/.vnc/passwd
Run Code Online (Sandbox Code Playgroud)

然后我使用以下命令启动了 docker 镜像:

docker run -p 5900 --rm -it --entrypoint /bin/bash selenium-tests
Run Code Online (Sandbox Code Playgroud)

并开始krdc作为我的 VNC 查看器。那么现在怎么办?

我在krdc. 也许我错过了什么?我是否必须在 docker 中明确启动 vnc 代码?我需要向docker命令传递额外的参数吗?

  • 码头工人:1.13.1
  • Ubuntu:16.4.03
  • krdc:4.14.16

Nic*_*lay 10

问题中有两个问题会阻止您实现想要实现的目标:

1.图像中缺少 X 服务器。

2. VNC 服务器应该在容器中启动。

的附加部分Dockerfile是:

RUN apt-get install -y x11vnc xvfb 
RUN mkdir ~/.vnc
RUN x11vnc -storepasswd 1234 ~/.vnc/passwd
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)

在哪里entrypoint.sh

#!/bin/bash
x11vnc -forever -usepw -create &
/bin/bash
Run Code Online (Sandbox Code Playgroud)

现在我们可以使用以下命令启动一个容器:

docker run --rm -ti -p 5900:5900 <image_name_or_id>
Run Code Online (Sandbox Code Playgroud)

并通过vncviewer从容器启动的同一主机访问它:

vncviewer localhost:5900
Run Code Online (Sandbox Code Playgroud)

  • 我不明白为什么这里需要 shell 脚本...似乎是不必要的过度设计,因为&lt;插入原因&gt;只需将其设置为 ```ENTRYPOINT x11vnc -forever -usepw -create &amp; /bin/bash``` 保留很简单 (2认同)