建设银行车贷网站,设计师必备的国际设计网站,中国建设积分商城网站,wordpress 自定义首页该系列文章的目的旨在之前的章节基础上#xff0c;使用x11docker构建一个可以使用GPU的docker容器。该容器可以用于3D图形渲染/XR 等使用GPU渲染的程序调试和运行。
0 why docker
为什么非要用x11docker#xff0c;而不是其他的docker呢#xff1f;
因为一般的docker是不…该系列文章的目的旨在之前的章节基础上使用x11docker构建一个可以使用GPU的docker容器。该容器可以用于3D图形渲染/XR 等使用GPU渲染的程序调试和运行。
0 why docker
为什么非要用x11docker而不是其他的docker呢
因为一般的docker是不能够使用GPU来渲染3D图形化程序的而且即便是可以运行3d图形化程序默认也是使用CPU而不是GPU的。也就是说Docker本身是不提供允许使用图形用户界面运行应用程序的显示服务器。而x11docker 填补了空白。它运行一个X 显示服务器并将其提供给容器。X 服务器可以从主机或图像x11docker/xserver的容器中运行。此外 x11docker 还进行了一些安全设置以增强容器隔离并避免 X 安全漏洞。这允许沙盒环境很好地保护主机系统免受可能的恶意或错误软件的侵害。
1 了解和使用x11docker基础
1 x11docker的github网址- GitHub - mviereck/x11docker
2 下载x11docker专属镜像。x11docker的镜像需要单下载因为最后要使用x11docker命令来执行不可以是任意的镜像而是在docker hub网站上 以x11docker为前缀命名的docker镜像检索链接如下根据自己的实际需求下载镜像即可xfce、xserver、lxde等等。。。
https://hub.docker.com/search?qx11docker
3 下载x11docker使用如下命令
curl -fsSL https://raw.githubusercontent.com/mviereck/x11docker/master/x11docker | sudo bash -s -- --update4 测试x11docker
命令有了镜像也有了接下来就可以执行命令看看效果了比如执行以下命令
x11docker --desktop --size 320x240 x11docker/lxde
就会直接显示桌面程序如下所示 这里的desktop命令表示桌面版程序--size表示显示窗口的大小。
2 x11docker构建自定义的GPU运行环境
2.1 镜像操作
#1 下载镜像
$docker pull x11docker/xfce#2 运行容器并设置好共享文件夹
$docker run -it -v /home/share/:/home/share/ --name devt3 x11docker/xfce /bin/bash#3 开始apt update 然后按需install各种软件执行结束后exit
$apt update
$apt install ...#4 commit操作将容器压缩到镜像中这样就可以docker push提交到自己的服务器了
$docker commit c83e26ce754e x11docker/xfce:v20 //将container容器直接输出到image镜像中。
这里下载好母板镜像后 根据自己的需要install各种软件最后exit退出并将打包好的镜像提交到自己的服务器中。
2.2 直接运行镜像导致黑屏怎么解
使用Dockerfile编译出可运行的x11docker镜像。这里注意经过安装软件后的镜像无法直接再用x11docker 运行会黑屏这时候怎么办呢使用Dockerfile编译出一个特殊版本 x11docker/xfce:v20。这里使用了一个Dockerfile内容如下
# x11docker/xfce
#
# Run XFCE desktop in docker.
# Use x11docker to run image.
# Get x11docker from github:
# https://github.com/mviereck/x11docker
#
# Examples:
# - Run desktop:
# x11docker --desktop x11docker/xfce
# - Run single application:
# x11docker x11docker/xfce thunar
#
# Options:
# Persistent home folder stored on host with --home
# Shared host folder with --share DIR
# Hardware acceleration with option --gpu
# Clipboard sharing with option --clipboard
# ALSA sound support with option --alsa
# Pulseaudio sound support with option --pulseaudio
# Language setting with --lang [$LANG]
# Printing over CUPS with --printer
# Webcam support with --webcam
#
# Look at x11docker --help for further options.FROM /x11docker/xfce:v20RUN apt-get update apt-mark hold iptables \env DEBIAN_FRONTENDnoninteractive apt-get install -y --no-install-recommends \dbus-x11 \psmisc \xdg-utils \x11-xserver-utils \x11-utils \env DEBIAN_FRONTENDnoninteractive apt-get install -y --no-install-recommends \xfce4 \env DEBIAN_FRONTENDnoninteractive apt-get install -y --no-install-recommends \libgtk-3-bin \libpulse0 \mousepad \xfce4-notifyd \xfce4-taskmanager \xfce4-terminal \env DEBIAN_FRONTENDnoninteractive apt-get install -y --no-install-recommends \xfce4-battery-plugin \xfce4-clipman-plugin \xfce4-cpufreq-plugin \xfce4-cpugraph-plugin \xfce4-diskperf-plugin \xfce4-datetime-plugin \xfce4-fsguard-plugin \xfce4-genmon-plugin \xfce4-indicator-plugin \xfce4-netload-plugin \xfce4-places-plugin \xfce4-sensors-plugin \xfce4-smartbookmark-plugin \xfce4-systemload-plugin \xfce4-timer-plugin \xfce4-verve-plugin \xfce4-weather-plugin \xfce4-whiskermenu-plugin \env DEBIAN_FRONTENDnoninteractive apt-get install -y --no-install-recommends \libxv1 \mesa-utils \mesa-utils-extra \sed -i s%property nameThemeName typestring valueXfce/%property nameThemeName typestring valueRaleigh/% /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
RUN apt-get install libxcb-xkb-dev
使用如下命令编译Dockerfile
$docker build -f Dockerfile -t x11docker/xfcetestXXX
这样使用x11docker 运行该镜像就不会有问题了。
2.3 窗口显示无法使用GPU怎么配置都不行怎么办?
在调试时遇到一个新问题使用这几个参数 要么使用--gpu后就只能全屏显示要么无法显示要么即便可以显示但无法使用GPU一个黑屏卡在那里不动。后来仔细分析了下这几个参数。
--gpu: 使用gpu加速--desktop:桌面版--xorg:在X环境中使用的选项
并未发现哪里不妥正常情况是--desktop和 --gpu肯定是够了但就是显示不正确。后来对x11docker/xserver这个镜像做了一些了解发现有了x11docker/xserver这个镜像x11docker可使用的扩展参数就多了有--kwin --nxagent --weston --weston-xwayland --xephyr --xorg --xpra --xpra-xwayland --xvfb --xwayland。猜想weston的一些参数可解决该问题于是尝试pull镜像x11docker/xserver这时再使用如下命令就不会有问题了。详细命令如下
$docker pull x11docker/xserver
$sudo x11docker --desktop x11docker/xfcetestXXX --gpu --share /home/share
这样就可以在窗口程序中直接使用GPU了。大功告成。