docker运行一个可以使用usb和显卡加速的桌面linux

# 项目简介

https://hub.docker.com/r/linuxserver/

他是默认开了web vnc 和 xrdp的

其中ubuntu的镜像是支持3d加速的。

# 准备工作

先查看宿主机的显卡 ls /dev/dri usb设备 ls /dev/bus/usb 可以用 usbutils 和 lspice 详细查看

# 选择 webtop 镜像

没有gnome,我这里 选择 ubuntu-kde,

# 和常规docker不一样的地方

  • 1、设备的映射

    --device /dev/dri:/dev/dri \
    --device /dev/fuse \
    

/dev/dri 显卡 /dev/fuse 就是fuse 宿主机要 ‘modprobe fuse’

  • 2、docker嵌套

    -v /var/run/docker.sock:/var/run/docker.sock  \
    
  • 3、权限

1
2
--device /dev/fuse \
--cap-add SYS_ADMIN \

或者

1
2
3
--device /dev/fuse \
--cap-add SYS_ADMIN \
--security-opt apparmor:unconfined \

实在不行直接上 --privileged

# 创建

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
docker stop webtop-arch-kde && docker rm webtop-arch-kde
docker run -d  \
  --name=webtop-arch-kde \
  --hostname=docker-arch \
  --privileged  \
  --security-opt seccomp=unconfined  \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -e SUBFOLDER=/   \
  -e KEYBOARD=en-us-qwerty  \
  -e TITLE=Webtop  \
  -p 59030:3000 \
  -p 59031:3389 \
  -p 59032:22 \
  -p 59033-59039:59033-59039 \
  -v /var/run/docker.sock:/var/run/docker.sock  \
  -v /dev/bus/usb:/dev/bus/usb \
  --device /dev/dri:/dev/dri \
  --cap-add SYS_ADMIN --cap-add MKNOD --device /dev/fuse:mrw  \
  --restart unless-stopped \
  linuxserver/webtop:arch-kde

# 中文和汉化

1
2
sudo pacman -Sy nano 
sudo nano /etc/pacman.d/mirrorlist
1
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
1
2
3
sudo pacman -S wqy-microhei   
sudo pacman -S wqy-zenhei 
sudo pacman -S fcitx5-im fcitx5-rime 

# 时区

需要su sudo passwd root echo “Asia/Shanghai” > /etc/timezone rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 输入法配置

1
2
3
4
5
6
7
sudo nano /etc/environment
-----------
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus
1
source /etc/environment

# yay

1
sudo nano /etc/pacman.conf
1
2
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
1
2
sudo pacman -Sy archlinuxcn-keyring
sudo pacman -S  yay

# 其他常用工具

1
sudo pacman -S wget unzip

# 聊天软件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
sudo pacman -S libnotify dunst #通知服务

yay -S electronic-wechat-uos-bin

#kde还需要一个
sudo pacman -S xdg-desktop-portal-kde
wget -c https://dldir1.qq.com/qqfile/qq/QQNT/4691a571/QQ-v2.0.1-429_x64.AppImage
chmod u+x ./QQ-*
#AppImage依赖fuse,docker里面的fuse有一点小问题,启动测试
./QQ-v2.0.1-429_x64.AppImage --appimage-extract-and-run
sudo  pacman -S telegram-desktop

# 宿主重启一下docker

1
docker restart webtop-arch-kde

# 最后结语

因为docker的原因,后续一些小地方的处理会非常麻烦

尝鲜 可以,或者只用几个简单的软件也没啥问题,日用还是有一些问题的。

只用来跑一个几个软件 是不错的选择。

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计