Linux docker(03)可使用GPU渲染的x11docker实战总结

news/2024/4/23 16:36:02/文章来源:https://blog.csdn.net/vviccc/article/details/129130566

该系列文章的目的旨在之前的章节基础上,使用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?q=x11docker

@3 下载x11docker,使用如下命令:

curl -fsSL https://raw.githubusercontent.com/mviereck/x11docker/master/x11docker | sudo bash -s -- --update

@4 测试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_FRONTEND=noninteractive apt-get install -y --no-install-recommends \dbus-x11 \psmisc \xdg-utils \x11-xserver-utils \x11-utils && \env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \xfce4 && \env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \libgtk-3-bin \libpulse0 \mousepad \xfce4-notifyd \xfce4-taskmanager \xfce4-terminal && \env DEBIAN_FRONTEND=noninteractive 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_FRONTEND=noninteractive apt-get install -y --no-install-recommends \libxv1 \mesa-utils \mesa-utils-extra && \sed -i 's%<property name="ThemeName" type="string" value="Xfce"/>%<property name="ThemeName" type="string" value="Raleigh"/>%' /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了。大功告成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_71751.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第2讲-数据库系统的结构抽象与演变(测试题总结)

一、测试题 DBS的三级模式&#xff1a;外模式&#xff08;也叫用户模式或子模式&#xff09;&#xff0c;模式&#xff08;也叫逻辑模式&#xff09;&#xff0c;内模式&#xff08;也叫存储模式&#xff09; 外模式/模式映像 实现了数据的逻辑独立性 模式/内模式映像 实现了…

C++ 入门篇(八) auto关键字

目录 一、auto简介 二、auto的使用场景 三、注意事项 四、源代码 一、auto简介 在早期C/C中auto的含义是&#xff1a;使用auto修饰的变量&#xff0c;是具有自动存储器的局部变量&#xff0c;C11中&#xff0c;标准委员会赋予了auto全新的含义即&#xff1a;auto不再是一个存…

c++ 那些事 笔记

GitHub - Light-City/CPlusPlusThings: C那些事 1. ① extern extern关键字&#xff0c;C语言extern关键字用法详解 如果全局变量不在文件的开头定义&#xff0c;其有效的作用范围只限于其定义处到文件结束。如果在定义点之前的函数想引用该全局变量&#xff0c;则应该在…

前缀和差分(C/C++)

目录 1. 前缀和的定义 2. 一维前缀和 2.1 计算公式 2.2 用途 2.3 小试牛刀 3. 二维前缀和 3.1 用途 1. 前缀和的定义 对于一个给定的数列A&#xff0c;他的前缀和数中 S 中 S[ i ] 表示从第一个元素到第 i 个元素的总和。 如下图&#xff1a;绿色区域的和就是前缀和数组…

清洁级动物(CL)实验室设计SICOLAB

清洁级动物&#xff08;CL&#xff09;实验室设计清洁级动物&#xff08;CL&#xff09;实验室设计有哪些内容&#xff1f;工艺流程是如何&#xff1f;功能房间的划分清洁级动物实验室&#xff08;CL实验室&#xff09;是进行高洁净度动物实验的专门场所&#xff0c;需要满足一…

Shopee、ebay、亚马逊等跨境卖家了解测评的一篇干货

随着时代的发展&#xff0c;大家越来越喜欢网购&#xff0c;国外也有亚马逊、沃尔码、阿里国际、速卖通、ebay、shopee、Lazada、ozon、temu等等&#xff0c;而国外这些平台也有很大的市场&#xff0c;跨境电商也随时诞生&#xff0c;而当今社会环境实体生意越来越难做&#xf…

Kubernetes二 Kubernetes之实战以及pod详解

Kubernetes入门 一 Kubernetes实战 本章节将介绍如何在kubernetes集群中部署一个nginx服务&#xff0c;并且能够对其进行访问。 1.1 Namespace Namespace是kubernetes系统中的一种非常重要资源&#xff0c;它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。…

【java】Spring Cloud --Spring Cloud 的核心组件

文章目录前言一、Eureka&#xff08;注册中心&#xff09;二、Zuul&#xff08;服务网关&#xff09;三、 Ribbon&#xff08;负载均衡&#xff09;四、Hystrix&#xff08;熔断保护器&#xff09;五、 Feign&#xff08;REST转换器&#xff09;六、 Config&#xff08;分布式配…

飞塔Fortinet防火墙SSL VPN双因素身份认证(2FA)方案

作为行业领先的防火墙厂商&#xff0c;飞塔Fortinet结合了高性能 VPN 功能&#xff0c;代表了网络安全的新概念。其中飞塔Fortinet防火墙 SSL VPN 因其突出的安全性能而被广泛应用在远程办公场景中。但在 SSL VPN 登录时用户仅需输入用户名和固定的静态密码&#xff0c;若遭遇账…

kettle安装部署_简单认识_Spoon勺子界面---大数据之kettle工作笔记002

然后我们来看一下这个kettle的安装,很简单,下载解压就可以了 上面的地址是官网很烂 下面的地址好一些 这个是官网可以看到很慢,很不友好 这个是下面那个地址,可以看到 最新的是9.0了,一般都用 一般都用8.2 这里下载这个就可以了 下载以后可以看到有个pdi

LeetCode 每日一题2347. 最好的扑克手牌

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…

《爆肝整理》保姆级系列教程python接口自动化(十九)--Json 数据处理---实战(详解)

简介 上一篇说了关于json数据处理&#xff0c;是为了断言方便&#xff0c;这篇就带各位小伙伴实战一下。首先捋一下思路&#xff0c;然后根据思路一步一步的去实现和实战&#xff0c;不要一开始就盲目的动手和无头苍蝇一样到处乱撞&#xff0c;撞得头破血流后而放弃了。不仅什么…

【大数据离线开发】7.2 搭建HBase环境

7.2 搭建HBase的环境 准备工作&#xff1a; 解压Hbase安装包 [rootbigdata111 tools]# tar -zxvf hbase-1.3.1-bin.tar.gz -C ~/training/设置Hadoop的环境变量 vi ~/.bash_profile HBASE_HOME/root/training/hbase-1.3.1 export HBASE_HOMEPATH$HBASE_HOME/bin:$PATH export…

005 利用fidder抓取app的api,获得股票数据

一、下载安装fidder 百度搜索fidder直接下载&#xff0c;按提示安装即可。 二、配置fidder 1. 打开fidder&#xff0c;选择tools——options。 2. 选择HTTPS选项卡&#xff0c;勾选前三项&#xff0c;然后点击右侧【actions】&#xff0c;选择【trust root certificate】&a…

黑马程序员-Linux系统编程-01

课程链接 01-Linux命令基础习惯-Linux系统编程_哔哩哔哩_bilibili 课程重点笔记 01-linux命令基础习惯 终端 终端&#xff1a;一切输入、输出的总称&#xff0c;因此终端并不是一定指的是命令行&#xff0c;只要是能进行输入或者输出即可&#xff0c;但是在linux终端上‘’内…

Java EE|TCP/IP协议栈之传输层UDP协议详解

文章目录一、对UDP协议的感性认识简介主要特点二、UDP的报文结构协议端格式概览报文结构详解源端口目的端口16位UDP报文长度16位校验和参考一、对UDP协议的感性认识 简介 UDP&#xff0c;是User Datagram Protocol的简称&#xff0c;中文名是用户数据报协议&#xff0c;是OSI…

RocketMQ 第二章

RocketMQ 第二章 7、SpringBoot整合RocketMQ SpringBoot 提供了快捷操作 RocketMQ 的 RocketMQTemplate 对象。 7.1、引入依赖 注意依赖的版本需要和 RocketMQ 的版本相同。 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rock…

【Java期末复习】《面向对象程序设计》练习库

目录 一、单选题 二、填空题 三、程序填空题 1、 super使用--有如下父类和子类的定义&#xff0c;根据要求填写代码 2、简单加法计算器的实现 3、House类 4、矩形类 5、创建一个Box类&#xff0c;求其体积 四、函数题 6-1 求圆面积自定义异常类 6-2 判断一个数列是…

会利用信息差赚钱的人才是聪明人

毕业后找不到工作&#xff0c;穷到只剩下时间&#xff0c;大小做了20多份副业兼职&#xff0c;终于找到了可靠的渠道&#xff0c; 我是专科生&#xff0c;学历不好&#xff0c;专业拉胯。毕业后&#xff0c;我找了两三份工作。要么工资太低&#xff0c;只能交房租&#xff0c;…

一种基于强化学习的自动变道机动方法

文章目录摘要前言相关的工作方法论动作空间奖励函数设计Q学习仿真结果结论摘要 变道是一项至关重要的车辆操作&#xff0c;需要与周围车辆协调。建立在基于规则的模型上的自动换道功能可能在预定义的操作条件下表现良好&#xff0c;但在遇到意外情况时可能容易失败。在我们的研…