VNC(Virtual Network Computing )是一种图形化的桌面共享协议,它使用远程帧缓冲协议 (RFB) 来远程控制另一台计算机。 对于一般性的GUI 程序运行需求,用户可以借助 VNC 在不安装完整桌面环境的情况下方便快捷的实现。本文旨在介绍如何借助 TurboVNC 工具,在容器实例中运行 GUI 程序,并通过本地电脑访问。

前提条件

容器实例支持 SSH 访问

操作步骤

  1. 访问容器实例后台

  2. 执行如下命令,安装 VNC 服务的基本依赖包。

    apt update && apt install -y libglu1-mesa-dev mesa-utils xterm xauth x11-xkb-utils xfonts-base xkb-data libxtst6 libxv1
  3. 执行如下命令,安装 libjpeg-turbo 和 turbovnc。

    export TURBOVNC_VERSION=2.2.5
    export LIBJPEG_VERSION=2.0.90
    wget http://aivc.ks3-cn-beijing.ksyun.com/packages/libjpeg-turbo/libjpeg-turbo-official_${LIBJPEG_VERSION}_amd64.deb
    wget http://aivc.ks3-cn-beijing.ksyun.com/packages/turbovnc/turbovnc_${TURBOVNC_VERSION}_amd64.deb
    dpkg -i libjpeg-turbo-official_${LIBJPEG_VERSION}_amd64.deb
    dpkg -i turbovnc_${TURBOVNC_VERSION}_amd64.deb
    rm -rf *.deb
  4. 执行如下命令,启动 VNC 服务。

    USER=root /opt/TurboVNC/bin/vncserver :1 -desktop X -auth /root/.Xauthority -geometry 1920x1080 -depth 24 -rfbwait 120000 -rfbauth /root/.vnc/passwd -fp /usr/share/fonts/X11/misc/,/usr/share/fonts -rfbport 6006
    说明

    此步骤运行过程中,需设置 VNC 服务的密码,用户自定义即可,该密码将用于后续 VNC 服务的连接。

  5. 执行如下命令,检查服务是否启动。若返回结果中有 vncserver 进程,则证明已启动。

    ps -ef | grep vnc
    faq vnc 2
  6. 根据本地电脑系统,从 TurboVNC 官网下载并安装客户端。

  7. 启动 VNCServer 服务(即步骤 4)时,手动设置了 rfbport=6006 端口,故需在本地电脑执行如下操作,使用 SSH 将容器实例中的端口代理至本地。

    1. 登录控制台,在左侧导航栏选择容器实例,在实例列表页面中,点击指定实例所在行的更多访问

      faq vnc 3
    2. 在弹出的窗口中,查看 SSH 访问信息,记录 SSH 命令以及初始密码。

      faq vnc 4
    3. 打开本地电脑终端,执行如下代理命令,并输入密码。

      ssh -CNg -L 6006:127.0.0.1:6006 root@139.198.179.206 -p 42151
      • 6006:127.0.0.1:6006 是指代理实例内 6006 端口到本地 6006 端口。

      • root@139.198.179.20642151 端口号为平台内容器实例 SSH 访问信息,需根据实际情况进行修改。

  8. 本地电脑打开 TurboVNC 客户端,VNC Server 中输入 127.0.0.1:6006,点击 Connect

    faq vnc 1
  9. 在新的弹窗中,输入启动 VNC 服务时设定的密码,即可看到 VNC 连接成功后的界面。

    faq vnc 5