【问题标题】:docker vnc 2nd time connect issuedocker vnc 第二次连接问题
【发布时间】:2018-08-03 02:06:42
【问题描述】:

我已经创建了一个 docker 镜像。然后我用命令docker run -d -p 5901:5901 -p 2222:22 dockerImageName 运行它。 Docker 运行良好。在此之后,我使用0.0.0.0:5901 连接到 vnc。它连接正确,我得到了一个 GUI。

现在我使用docker stop containerId 停止泊坞窗。现在,如果我尝试使用命令 docker start containerId 重新运行容器,docker 会出现,但是当我尝试使用 0.0.0.0:5901 连接到 vnc 时,它说连接意外关闭

我正在使用这张图片https://hub.docker.com/r/thyrlian/android-sdk-vnc/

【问题讨论】:

  • 这听起来像是图像有问题。它不会以您想要的方式处理容器停止和启动。如果您需要更多帮助,则需要共享您的 Dockerfile 或映像。
  • 我正在使用这张图片“hub.docker.com/r/thyrlian/android-sdk-vnc
  • 感谢@Naman 使用图片。问题正是@King Chung Huang 所解决的问题(请在他的回答下查看我的 cmets)。实际上每次停止容器时都应该删除两个锁定文件。我现在尝试trap SIGTERM 并做一些清理工作以删除那些锁定文件。代码更改可以查看here。很快我将发布一个包含此修复程序的新图像。请试一试。非常感谢。
  • 顺便说一句,理想情况下,每当您想在 Android 模拟器上运行任何测试时,您都应该确保它处于干净状态。这就是为什么建议每次都启动一个新容器,而不是使用docker stop。尽管如此,我还是解决了这个问题,因为我相信你可能有其他原因导致这种情况。

标签: docker vnc vnc-viewer


【解决方案1】:

看起来thyrlian/android-sdk-vnc 映像中的 VNC 服务器第二次启动的方式不同,因为在容器停止时会留下一个锁定文件。

如果我从该映像创建并启动一个容器,这就是 vncserver-stderr.log 显示的内容。

▸ ~ docker run -d -p 5901:5901 -p 2222:22 --name android-sdk-vnc thyrlian/android-sdk-vnc
212b6de3d3ee71f221e7e190baaf650b779cf351a9c4654db19ef3402cdaa86f
▸ ~ docker exec android-sdk-vnc cat /var/log/supervisord/vncserver-stderr.log
xauth:  file /root/.Xauthority does not exist

New 'X' desktop is 212b6de3d3ee:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/212b6de3d3ee:1.log

停止和启动同一个容器后,日志显示如下。

▸ ~ docker stop android-sdk-vnc
android-sdk-vnc
▸ ~ docker start android-sdk-vnc
android-sdk-vnc
▸ ~ docker exec -it android-sdk-vnc cat /var/log/supervisord/vncserver-stderr.log
xauth:  file /root/.Xauthority does not exist

New 'X' desktop is 212b6de3d3ee:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/212b6de3d3ee:1.log


Warning: 212b6de3d3ee:1 is taken because of /tmp/.X1-lock
Remove this file if there is no X server 212b6de3d3ee:1

New 'X' desktop is 212b6de3d3ee:2

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/212b6de3d3ee:2.log

我不熟悉这个 VNC 服务器,但我猜/tmp/.X1-lock 的锁定文件会阻止它像第一次那样运行。

我建议在源 GitHub 存储库中提交问题。您可以在 Source Repository 下方的 Docker Hub page for thyrlian/android-sdk-vnc 上找到它。

【讨论】:

  • 是的,这就是问题所在。当我使用 vnc 拉取不同的 docker 映像时,我想通了。谢谢
  • 感谢您的回答。实际上,问题是由锁定文件引起的。实际上,除了您解决的锁定文件:/tmp/.X1-lock,还有另一个:/tmp/.X11-unix/X1。为了解决问题,必须删除两个锁定文件。我已经在我的代码库中解决了这个问题,再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多