如何在Ubuntu中使用VNC运行Docker镜像?

10
为了检查在docker镜像中运行的selenium测试,我正在尝试设置VNC以验证测试期间发生的情况。我遵循这里提出的建议,并在Dockerfile中添加了以下附加行来创建一个新的docker镜像:
RUN     apt-get install -y x11vnc 
RUN     mkdir ~/.vnc
RUN     x11vnc -storepasswd 1234 ~/.vnc/passwd

我使用以下命令启动了Docker镜像:

docker run -p 5900 --rm -it --entrypoint /bin/bash selenium-tests

我以krdc作为我的VNC查看器,那么接下来怎么办呢?

我在krdc中没有看到我的docker镜像,也许我错过了什么?我是否需要显式地在docker内部启动vnc代码? 我需要向docker命令传递额外的参数吗?

  • docker: 1.13.1
  • ubuntu: 16.4.03
  • krdc: 4.14.16

嘿,如果你只想运行Selenium,也许你可以使用这个镜像:https://hub.docker.com/r/selenium/standalone-chrome - Lai32290
1个回答

16
在问题中有两个问题防碍你达到你想要实现的目标:
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"]

其中entrypoint.sh是:

#!/bin/bash
x11vnc -forever -usepw -create &
/bin/bash

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

docker run --rm -ti -p 5900:5900 <image_name_or_id>

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

vncviewer localhost:5900

1
你不需要在 entrypoint.sh 上设置可执行位吗? - Calab
1
是的,在“entrypoint.sh”上应该设置可执行位。 - nickgryg
2
我不明白为什么需要一个shell脚本...似乎是不必要的过度工程,因为<插入原因>只需这样做ENTRYPOINT x11vnc -forever -usepw -create & /bin/bash保持简单 - Branden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接