ue4-runtime_ubuntu_docker_使用教程方法

ue4-runtime_ubuntu_docker_使用教程方法

  • 前言
  • docker安装
  • NVIDIA Container Toolkit安装
  • ue4-runtime镜像包简介、下载、使用
    • 简介
      • 开发镜像与运行时镜像对比
    • 下载
    • 使用
  • 可能遇到的问题
  • 参考文献

前言

本文主要涉及到本人进行ue4-runtime的docker的使用,以及相关的docker安装、docker如何使用gpu和一些可能会遇到的问题的记录,如有错漏希望大佬们能留言提醒,文末会附上参考文章链接。

  1. docker安装;
  2. NVIDIA Container Toolkit安装;
  3. ue4-runtime镜像包简介、下载、使用;
  4. 可能遇到的问题;

docker安装

docker的安装可直接参考菜鸟教程,此处先贴链接:

Ubuntu Docker安装:https://m.runoob.com/docker/ubuntu-docker-install.html

Ubuntu建议使用18.04及以上的版本,因为docker已经停止了16.04及以下版本的更新支持。
系统安装的时候如果勾选,会自带使用snap安装的docker,网上大部分资料都是apt安装的docker,可以使用snap remove命令卸载后依照教程使用apt重装docker。两个版本安装的docker在一些使用上会有区别,例如查看状态需要使用systemctl status snap.docker.docker,建议使用apt重装

NVIDIA Container Toolkit安装

普通的docker环境不支持gpu,因此我们需要一个nvidia-docker的版本。如图:
ue4-runtime_ubuntu_docker_使用教程方法_第1张图片
此处先贴nvidia官方文档,有对Nvidia Container toolkit的从简介到入土的全部说明,非常详细!不擅长英文可以用google chrome右键翻译成中文查阅。
Nvidia Container Toolkit官方文档:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#installing-on-ubuntu-and-debian

本文只摘取小部分重点信息,仅供概览,详细操作步骤按官方教程走就好,网上大部分教程都是搬运自这里。如果docker版本是小于19.03的,需要单独部署nvidia-docker,可自行查旧资料,建议使用19.03及以上版本的docker

平台要求
运行 NVIDIA Container Toolkit 的先决条件列表如下所述:

  1. 内核版本 > 3.10 的 GNU/Linux x86_64
  2. Docker >= 19.03(推荐,但某些发行版可能包含旧版本的 Docker。支持的最低版本为 1.12)
  3. 架构 >= Kepler(或计算能力 3.0)的 NVIDIA GPU
  4. NVIDIA Linux 驱动程序>= 418.81.07(请注意,不支持较旧的驱动程序版本或分支。)

笔记

ue4-runtime镜像包简介、下载、使用

docker hub上提供了ue4-runtime的镜像包,分别基于Ubuntu18.04、20.04系统打包了OpenGL、Vulkan、CUDA、PulseAudio Client、PulseAudio Server、VirtualGL等工具,可根据需求pull不同tags的image进行使用。

简介

  1. 目前仅包含 Linux 开发镜像,无 Windows 开发镜像(由于技术和法律限制,官方无法发布 Windows 开发镜像)。所有支持像素流的 Windows 运行时镜像都支持基于 NVIDIA 和 AMD 显卡的 GPU 加速。Linux 镜像只支持 NVIDIA 显卡,对AMD 显卡的支持将在未来推出。
  2. UE4 Container 基于 TensorWorks开源架构开发,并由 虚幻容器 社区维护。
  3. UE4 Container 的作用:增强生产管线,开发次世代云应用程序,大规模部署企业解决方案等。
  4. UE4 Container 属于轻量级的,以容器镜像的方式存储在磁盘上,通过 Image 可运行一个或多个 Container 。与虚拟机不同的是,Container 共享一个底层 OS 内核,可跨不同 Container Image 共享公共数据,并能实现大量并发部署。 容器的应用标准单元可在不同计算基础设备(包括本地设备和云端设备)之间迁移。
  5. 包含两种容器镜像:开发镜像(Dev Images)和运行时镜像(Runtime Images)。4.27 版本中共有 7 中镜像类型。

开发镜像与运行时镜像对比

  1. 开发镜像用于需要编辑器的任务,在法律上有严格的 EULA 限制来管理它们的分发。

包含内容:

  • (必需): Engine 构建工具和 Editor
  • (可选):非核心引擎组件,如模板项目、调试符号和派生数据缓存 (DDC)
  • (可选):使虚幻编辑器能够渲染图形所需的运行时依赖项和配置文件
  • (可选):在 Linux 下将虚幻编辑器作为沙盒 GUI 应用程序运行所需的运行时依赖项和配置文件
  • (可选):使用 X11 转发通过 VNC 或 SSH 远程访问虚幻编辑器所需的运行时依赖项和配置文件
  • (可选):其他第三方附加功能或开源工具,例如 ue4cli

执行任务:

  • 在容器中构建和打包项目或插件
  • 为容器内的 Unreal 项目运行自动化测试工作流程
  • 运行命令行功能为容器内的 Unreal 项目烘焙光照、烘培内容、电影渲染或执行其他任务
  • 为容器内的 Unreal 项目渲染 Sequencer 过场动画
  • 在容器内运行 Python 脚本或其他编辑器自动化实用程序
  1. 运行时映像用于运行打包的项目,包含打包的 Unreal 项目及其运行时依赖项,并且可以更自由地分发。

包含内容:

  • (必需):运行带离屏渲染的打包虚幻项目所需的运行时依赖项
  • (可选):启用音频输出所需的运行时依赖项和配置文件
  • (可选):使用 Pixel Streaming 远程访问打包的 Unreal 项目所需的运行时依赖项和配置文件
  • (可选):使用 X11 转发通过 VNC 或 SSH 远程访问打包的 Unreal 项目所需的运行时依赖项和配置文件
  • (可以通过扩展基础镜像或绑定挂载文件自行添加):自定义在容器中运行的打包虚幻项目

执行任务:

  • 使用 Engine 开发映像在容器内构建和打包项目,然后在容器内运行它
  • 在容器外构建和打包项目,然后在容器内运行
  1. 可用镜像容器
    容器镜像的源代码:Engine/Extras/Containers.
    容器镜像的预构建版本:GitHub 容器注册表。
镜像 镜像类型 描述
dev 开发镜像 虚幻引擎的完整 Linux 开发镜像,包括虚幻引擎的已安装版本、模板项目和完整调试符号。
dev-slim 开发镜像 Linux 版本的开发镜像,内容较小,不包含模板项目和调试符号。
runtime 运行时镜像 带有或未带有 GPU 加速的简化版 Linux 运行时镜像,专用于在容器内运行打包的虚幻引擎应用程序。为了将镜像大小压缩到最小,此镜像不支持音频输出。 此容器镜像目前仅对使用 NVIDIA GPU 的机器提供 GPU 加速支持。
runtime-pixel-streaming 运行时镜像 此镜像扩展了简化版 Linux 运行时镜像,以添加像素流应用程序所需的依赖项,包括支持音频输出。因此,尽管此镜像仍比 Windows 运行时镜像要小得多,但明显比默认运行时镜像要大。此容器镜像目前仅支持 NVIDIA GPU 的 GPU 加速。
runtime-windows 运行时镜像 带有或未带有 GPU 加速的 Windows 运行时镜像,专用于在容器内运行打包的虚幻引擎应用程序。由于 Windows 容器镜像已经比 Linux 容器镜像大很多,而且与 Windows 操作系统本身的大小相比,像素流应用程序所需的依赖项相对较小,因此该镜像也包含这些依赖项。目前,对于在基于 GPU 加速的 Windows 容器内运行像素流应用的支持还是试验性的,不建议在实际开发中使用。
pixel-streaming-signaling-server 特殊镜像 包括像素流系统使用的 Cirrus 信号和 web 服务器的 Linux 容器镜像。
multi-user-server 特殊镜像 包括虚幻引擎多用户编辑系统所用服务器的 Linux 容器镜像。
  1. 软件及硬件要求

包含在虚幻引擎中的 Linux 容器镜像可以在 Windows、macOS 或 Linux 上构建和运行。计算机需满足以下硬件要求:

  • 64 位 CPU,支持 SLAT (二级地址转译,处理器虚拟化技术,为虚拟化应用提供加速功能,如VirtualBox、Hyper-V 等)。
  • 在系统 BIOS 中启用硬件虚拟化支持。
  • 系统内存至少为 4 GB。
  • Windows: 64位Windows 10 家庭版、专业版、企业版、教育版、1903 版本或更新版本,并且安装了 Windows 版 Docker 桌面版。
  • macOS: macOS 版 10.14 或更新版本,并且安装了 Mac 版 Docker 桌面版。
  • Linux: 64 位版本的 CentOS 7 或更新版本、Debian 10 或更新版本、Fedora 32 或更新版本、Ubuntu 16.04 或更新版本,或任何满足 Docker 先决条件的 Linux 发行版,并且安装了 Docker 引擎。

包含在虚幻引擎中的 Windows 容器镜像可以在 Windows 上构建和运行。计算机需满足以下软件要求:

  • 64 位 Windows 10 专业版、企业版、教育版、1809 版本或更新并且安装了 Windows 版 Docker 桌面版。

推荐使用Docker来构建并运行包含在虚幻引擎中的容器镜像。

下载

docker hub上提供了ue4-runtime的镜像包,分别基于Ubuntu18.04、20.04系统打包了OpenGL、Vulkan、CUDA、PulseAudio Client、PulseAudio Server、VirtualGL等工具,可根据需求pull不同tags的image进行使用。
ue4-runtime docker hub链接:https://hub.docker.com/r/adamrehn/ue4-runtime

# 示例,可根据需求更换tag
docker pull adamrehn/ue4-runtime:18.04-cudagl10.2-virtualgl
# 使用命令查看是否下载成功,ok的话会显示
docker images

pull好镜像后,如docker hub链接内描述所说,运行时宿主机需要运行X11服务,即窗口系统用于显示图像结果,需要挂载宿主机X11 socket挂载到容器,详情参见’Using the VirtualGL images‘部分。

# Replace "adamrehn/ue4-runtime:virtualgl" with your chosen image tag
docker run --gpus=all -v/tmp/.X11-unix:/tmp/.X11-unix:rw -e DISPLAY adamrehn/ue4-runtime:virtualgl bash

# 示例, -itd --name配置项自查作用,可docker run --help看帮助
docker run -itd --name ue4test --gpus=all -v/tmp/.X11-unix:/tmp/.X11-unix:rw -e DISPLAY adamrehn/ue4-runtime:18.04-cudagl10.2-virtualgl bash

需要音频输出的,参见’Audio output‘部分挂载音频服务,若需要容器命名、共享目录、端口映射功能等自行查找方法。

# 挂载音频服务
"-v/run/user/$UID/pulse:/run/user/1000/pulse"

使用

使用ue4-runtime镜像,可根据个人需要安装需要的库等,无特别注意事项,此处贴几个常用docker操作命令。

# 启动容器ue4test
docker start ue4test
# 暂时挂起,不关闭容器,同时按Ctrl+Q+P
Ctrl+Q+P
# 退出,并关闭容器,按Ctrl+D,或输入exit
Ctrl+D
exit
# 进入挂起的容器
docker attach ue4test
# 以root权限进入容器,正常进入为普通用户,无权限使用apt等命令
docker exec -it -u root ue4test bash

可能遇到的问题

  1. 使用ue4-runtime docker运行ue4工程时,可能会在InitSDL时失败,提示没有可用的video device,说明没有可用于输出显示渲染结果的设备,我的解决方法是使用带virtualGL的镜像,并依照上文所述挂载X11既可。
Could not initialize SDL : No available video device
error: XDG_RUNTIME_DIR not set in the environment. 

参考文献

最后感谢以下所有链接的作者提供的参考帮助。

  1. docker19.03+NVIDIA显卡+docker: Error response from daemon: could not select device driver “” with c
  2. docker容器使用GPU方法
  3. docker 容器中创建文件修改操作提示 Permission denied问题
  4. 菜鸟教程-Docker 镜像使用
  5. UE4 Container介绍
  6. UE4.27 linux云服务器像素流部署
  7. Nvidia Container Toolkit官方文档
  8. error: XDG_RUNTIME_DIR not set in the environment.报错
  9. dockerhub adamrehn/ue4-runtime主页
  10. Sources of Unreal Engine runtime images
  11. Could not initialize SDL : No available video device.报错

你可能感兴趣的:(数字人,docker,ubuntu,ue4,人工智能)