本文主要涉及到本人进行ue4-runtime的docker的使用,以及相关的docker安装、docker如何使用gpu和一些可能会遇到的问题的记录,如有错漏希望大佬们能留言提醒,文末会附上参考文章链接。
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重装。
普通的docker环境不支持gpu,因此我们需要一个nvidia-docker的版本。如图:
此处先贴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 的先决条件列表如下所述:
笔记
docker hub上提供了ue4-runtime的镜像包,分别基于Ubuntu18.04、20.04系统打包了OpenGL、Vulkan、CUDA、PulseAudio Client、PulseAudio Server、VirtualGL等工具,可根据需求pull不同tags的image进行使用。
包含内容:
执行任务:
包含内容:
执行任务:
镜像 | 镜像类型 | 描述 |
---|---|---|
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 容器镜像。 |
包含在虚幻引擎中的 Linux 容器镜像可以在 Windows、macOS 或 Linux 上构建和运行。计算机需满足以下硬件要求:
包含在虚幻引擎中的 Windows 容器镜像可以在 Windows 上构建和运行。计算机需满足以下软件要求:
推荐使用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
Could not initialize SDL : No available video device
error: XDG_RUNTIME_DIR not set in the environment.
最后感谢以下所有链接的作者提供的参考帮助。