系统中如果安装各种应用软件,很容易会因为版本冲刺引发异常。一个好的办法就是用容器来隔离系统环境,确保主机环境不变。对于一些有界面的程序,可以在容器内运行,让其界面显示在主机上。下面以安装和使用视频剪辑软件shotcut为例,介绍实现方案。
docker run -it --privileged=true --device /dev/snd -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -v /mnt:/mnt --gpus all ubuntu:22.04 bash
详细解释如下:
- --privileged=true赋予容器访问设备及文件的权限;
- --device将主机的音频设备/dev/snd共享给容器,实现容器内音频的输出;
- -v /tmp/.X11-unix:/tmp/.X11-unix将主机的x11目录挂载到容器的相同目录,实现显示界面输出;
- -e DISPLAY=$DISPLAY设置容器内的环境变量,显示器使用主机的显示器,这个可以不加,创建容器后在容器内设置也可以
- --gpus all,将主机gpu共享给容器,这个需要安装nvidia-container-toolkit,对于不使用gpu的用户,可以忽略
以上方法创建的容器,基本上就没有问题了,在容器内运行带gui界面的程序,界面就会在主机上显示,声音也会播放出来。比如安装音频播放软件和视频剪辑软件:
#安装x11的app,里面有个时钟程序可以用来测试
apt install x11-apps