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参数重新启动镜像。
- 灰屏黑屏问题的解决方法同上。 
