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