少女祈祷中...

vnc配置前的准备

启动容器

  • 这一步比较关键,要注意启动的镜像的版本。我们这里以Ubuntu举例,如果高于22.04,就必须加入参数--security-opt seccomp=unconfined。否则会出问题。在下述启动命令中,指定使用主机所有gpu资源,命名为wu1015_test,将容器5901端口映射到本地的32789。
    1
    docker run  --gpus all  --ipc=host --name wu1015_test --security-opt seccomp=unconfined -it -p  32789:5901 镜像id

新建用户

  • 建议不要使用root用户进行配置,建议新建一个用户避免出现一些问题。

    1
    adduser wu
  • 授予sudo权限。没有sudo的话就下一个apt install sudo

    1
    usermod -aG sudo wu

配置vnc

安装

  • 安装x11

    1
    apt-get install xorg openbox
  • 安装xfce桌面环境

    1
    sudo apt install xfce4 xfce4-goodies vim
  • 安装tightvncserver,这个地方要注意的是,这个是新的vnc,旧的是vnc4server好像。

    1
    apt install tightvncserver

// todo x11vnc

vnc配置

  • 启动vnc并关闭以生成配置文件。第一次启动会要求输入一个密码,不要太长。第二个选项选择n

    1
    2
    3
    vncserver :1

    vncserver -kill :1
  • 编辑启动文件。启动文件,顾名思义,在连接时加载的文件,可以在里面加入一些启动参数,比如thunar就可以启动xfce自带的文件管理器了。

    1
    vim ~/.vnc/xstartup
  • 全部删除并添加

    1
    2
    3
    4
    5
    6
    #!/bin/sh
    unset SESSION_MANAGER
    unset DBUS_SESSION_BUS_ADDRESS
    #openbox-session &
    xrdb $HOME/.Xresources
    startxfce4 &
  • 给予启动权限

    1
    chmod +x ~/.vnc/xstartup
  • 如果启动成功会回报

    1
    2
    3
    4
    New 'X' desktop is 4f09a4c66740:1

    Starting applications specified in /home/wu/.vnc/xstartup
    Log file is /home/wu/.vnc/4f09a4c66740:1.log

可能出现的一些问题以及解决方法

  • 如果找不到display可以选择配置一个环境变量

    1
    export DISPLAY=:1
  • 如果在vnc连接之后没办法输入可以通过xev检测。在服务器端输入xev就可以在vnc那开一个窗口用于检测输入,包括鼠标和键盘。

  • 报错failed to close file descriptor for child process(Operation not permitted)。就是前面的那个问题,用的镜像影视ubuntu22.04。使用--security-opt seccomp=unconfined参数重新启动镜像。

  • 灰屏黑屏问题的解决方法同上。

参考文章