`
阅读更多

 

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

 

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

 

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

 

包含内容:

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

执行任务:

  • 在容器中构建和打包项目或插件
  • 为容器内的 Unreal 项目运行自动化测试工作流程
  • 运行命令行功能为容器内的 Unreal 项目烘焙光照、烘培内容、电影渲染或执行其他任务
  • 为容器内的 Unreal 项目渲染 Sequencer 过场动画
  • 在容器内运行 Python 脚本或其他编辑器自动化实用程序

2、运行时映像用于运行打包的项目,包含打包的 Unreal 项目及其运行时依赖项,并且可以更自由地分发。

 

包含内容:

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

执行任务:

  • 使用 Engine 开发映像在容器内构建和打包项目,然后在容器内运行它
  • 在容器外构建和打包项目,然后在容器内运行

3、可用镜像容器。

 

容器镜像的源代码: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-signalling-server 特殊镜像 包括像素流系统使用的 Cirrus 信号和 web 服务器的 Linux 容器镜像。
multi-user-server 特殊镜像 包括虚幻引擎多用户编辑系统所用服务器的 Linux 容器镜像。

 不同的用例可能需要这些类型的容器映像中的一种或两种。

 

4、软件及硬件要求。

 包含在虚幻引擎中的 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 上构建和运行。计算机需满足以下软件要求:

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

 

 5、安装 Docker

Windows: 安装 Windows 版 Docker 桌面版

  安装时报错:Docker Desktop requires the Server service to be enabled.

  解决:在命令行运行 cmd ,输入命令 services.msc,查找并选中 Server, 将 Server 的服务状态设置为 “启动”。

 

macOS: 安装 Mac 版 Docker 桌面版

Linux: 按照相应说明为你的特定Linux发行版安装Docker引擎:CentOSDebianFedoraUbuntu其他 Linux 发行版

 

6、使用 Github 容器注册表进行身份验证。

 

Windows 下命令行运行以下:

 

>echo ACCESS_TOKEN | docker login ghcr.io -u USERNAME --password-stdin
Login Succeeded
ACCESS_TOKEN 替换为 GitHub 个人访问令牌;

 

USERNAME 替换为 GitHub 用户名;

 

使用以下命令登录 Docker: > docker login

 

使用容器注册表时需要选择 read:packs 作用域(下载容器映像并读取其元数据)、 write:packages 作用域(下载和上传容器映像并读取和写入其元数据)、delete:packages 作用域(删除容器映像)。

否则后续中会出现:

 

>docker pull ghcr.io/epicgames/unreal-engine:dev-4.27
Error response from daemon: unauthorized
 

 

7、拉取预构建容器镜像

使用以下命令从仓库获取镜像(虚幻引擎 4.27 的 Linux 开发镜像):
>docker pull ghcr.io/epicgames/unreal-engine:dev-4.27
dev-4.27: Pulling from epicgames/unreal-engine
e4ca327ec0e7: Downloading [===>                                               ]  1.948MB/26.71MB
719abd77eec9: Downloading [==============>                                    ]  1.965MB/6.907MB
9df1097c01f2: Download complete
6b384b7c6b03: Download complete
00b95fadb0bd: Downloading [=>                                                 ]  1.614MB/76.96MB
c753ccbd2736: Waiting
5a531cce8e03: Waiting
8bca498ef3ff: Pulling fs layer
c47731c87643: Waiting
d3696f0bbba6: Waiting
df04517ea90f: Waiting
2a22dbd3194e: Waiting
775ef48a05d4: Waiting
d24a8ebc0315: Waiting
aef8bd19d14f: Waiting
93d97caece49: Waiting
4f4fb700ef54: Waiting
36f9989086fc: Waiting
71dd8ab19e1c: Waiting
c68774f47d20: Pulling fs layer
 

执行该命令将下载一个封装了虚幻编辑器专用文件和构建工具的容器镜像,该镜像非常大。下载完会提示 "Status:Downloaded newer image for ghcr.io/epicgames/unreal-engine:dev-4.27"。

 

发现下载错了,我需要的是运行时镜像,于是 Ctrl+C 退出,执行以下清理镜像:

 

 

>docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
 

 

重新下载 runtime 镜像:

 

 

>docker pull ghcr.io/epicgames/unreal-engine:runtime-pixel-streaming
runtime-pixel-streaming: Pulling from epicgames/unreal-engine
d519e2592276: Waiting
d22d2dfcfa9c: Waiting
b3afe92c540b: Waiting
13a10df09dc1: Waiting
2028b9938ee3: Waiting
7784d5dee6f3: Waiting
787edf8a99c5: Waiting
c48f4acc9130: Waiting
719056f6b70a: Waiting
18ba7c45936e: Waiting
32ec3164a942: Waiting
bdbb5460508f: Waiting
75e6acbb0b6b: Waiting
68a5e2378345: Waiting
c36ee307280f: Pulling fs layer
599293a01162: Waiting
12066cdb74ea: Waiting
 

 

还是很慢的。无奈切换了其他镜像。

 

>docker pull ghcr.io/epicgames/unreal-engine:runtime-windows-20H2
runtime-windows-20H2: Pulling from epicgames/unreal-engine
18ae6bebe21d: Waiting
df018de09299: Waiting
b00a66660c45: Waiting
40ec84372bd0: Waiting
2a1f1dd9b0e6: Waiting
8f76d0fa8cca: Waiting
93181ca6b4a6: Waiting
image operating system "windows" cannot be used on this platform

 

发现没有将 Docker 切换为 windows Container。。。于是右键 “Switch to WIndows Container”。继续弹出以下错误:

 

An error occurred:

Containers feature is disabled. Enable it using the PowerShell script (in an administrative PowerShell) and restart your computer before using Docker Desktop: 

Enable-WindowsOptionalFeature -Online -FeatureName $("Microsoft-Hyper-V", "Containers") -All

 

解决方式:需要以 administrator 运行 Powershell,然后在 Powershell 中执行:

 

>Enable-WindowsOptionalFeature -Online -FeatureName $("Microsoft-Hyper-V", "Containers") -All

 

继续运行拉取命令:

 

PS C:\Windows\system32> docker pull ghcr.io/epicgames/unreal-engine:runtime-windows-20H2
runtime-windows-20H2: Pulling from epicgames/unreal-engine
18ae6bebe21d: Downloading [==>                                                ]  69.75MB/1.505GB
df018de09299: Downloading [>                                                  ]  3.243MB/1.187GB
b00a66660c45: Downloading [=>                                                 ]  352.1kB/16.51MB
40ec84372bd0: Waiting
2a1f1dd9b0e6: Waiting
8f76d0fa8cca: Waiting
93181ca6b4a6: Waiting

 

有速度了。拉取完是这样的:

 

PS C:\Windows\system32> docker pull ghcr.io/epicgames/unreal-engine:runtime-windows-20H2
runtime-windows-20H2: Pulling from epicgames/unreal-engine
18ae6bebe21d: Pull complete
df018de09299: Pull complete
b00a66660c45: Pull complete
40ec84372bd0: Pull complete
2a1f1dd9b0e6: Pull complete
8f76d0fa8cca: Pull complete
93181ca6b4a6: Pull complete
Digest: sha256:b8765ded5ffaa97be8c415967b22c3a538098693c457d546d4a065ee03f5803b
Status: Downloaded newer image for ghcr.io/epicgames/unreal-engine:runtime-windows-20H2
ghcr.io/epicgames/unreal-engine:runtime-windows-20H2
PS C:\Windows\system32>

 

 

 

8、在运行时容器中运行一个项目

 

 

 

 UE4 Docker 的未来发展

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    ue4-runtime:用于通过NVIDIA Docker运行打包的虚幻引擎项目的容器映像

    用于运行打包的UE4项目的容器映像 映像的各种标签为通过进行具有完整GPU加速的打包的虚幻引擎项目提供了最小的预配置环境。 (有关NVIDIA Container Toolkit的更多详细信息,请参见Unreal Containers社区中心上的。...

    ueditor 1.4.3 utf8 版中文繁体语言包

    var ue = UE.getEditor('container', {lang:"zh-hk" } ); 其中lang:"zh-hk"表示“中文-香港”,香港使用繁体字。 如果要用简体,这样即可: var ue = UE.getEditor('container' );

    vue实现公告栏文字上下滚动效果的示例代码

    本文详细的介绍了vue实现公告栏文字上下滚动效果的示例代码,分享给大家,具体入如下: ... <div class=text-container> <p class=text key=text.id>{{text.val}} [removed] export default { name: '

    5G-QoS-学习笔记.pdf

    2) UE或者AN发起PDU session modification过程,AMF转发给SMF; 3) SMF对AMF响应Nsmf_PDUSession_UpdateSMContext消息,这个消息中包含: N2 SM information(PDU session id, QFI, Qos profile, Session AMBR) ...

    前端vue如何使用高德地图

    首先,注册Key  1、注册开发者账号,成为高德开放平台开发者  2、登陆之后,在进入「应用管理」 页面「创建新... 3、为应用添加 Key,「服务平台」一项请选择「 Web 端 ( JSAPI ) 」 然后,书写代码 ... <!...meta na

    2016秋语文版语文八上第23课《记承天寺夜游》ppt课件

    2016秋语文版语文八上第23课《记承天寺夜游》ppt课件

    通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位

    container.scrollTop( scrollTo.offset().top – container.offset().top + container.scrollTop() ); // Or you can animate the scrolling: container.animate({ scrollTop: scrollTo.offset().top – container....

    36423 E-UTRAN X2AP ASN1.doc

    4 General 7 4.1 Procedure specification principles 7 4.2 Forwards and backwards compatibility 7 4.3 Specification notations 7 5 X2AP services 8 5.1 X2AP procedure modules 8 5.2 Parallel transactions 8...

    详解vue渲染函数render的使用

    1.什么是render函数? ...但是,在特殊情况下,这种写死的模式无法满足需求,...<div id=container> Hello world! 我们会如下使用: <!DOCTYPE html> <html> <head> <title>演示Vu

    jQuery实现轮播图及其原理详解

    本文实例为大家分享了jQuery实现轮播图及其原理的具体代码,供大家参考,具体内容如下 <!...<... <head>...meta charset="utf-8" name="viewport" content="width=device-width,initial-scale=... .container{ wid

    ferienlager-docs

    Abgesehen von CLI,Kan man sichüberdas Portainer Frontend mit dem Container verbinden。 Hierzu Unter einloggen(使用VSever登录名登录)>本地>容器>执行控制台>用户名:root shellöffnen。 Wiefügeich ...

    jQuery.lazyload+masonry改良图片瀑布流代码

    var $container = $('#main'); $container.imagesLoaded( function(){ $container.masonry({ itemSelector : '.item', columnWidth:205, gutterWidth:10, isAnimated: true }); }); var pre_href;

    vue实现个人信息查看和密码修改功能

    下面一段代码给大家介绍vue实现个人信息... //用了element组件,自己要加载和引入 <div class=all-container> <div class=all-container-padding> 基本信息 name=first> <el-form :model=userlist :rules=rul

    使用element-ui +Vue 解决 table 里包含表单验证的问题

    应用场景: 在实际使用中经常会遇到需要在Form表单中使用table表格进行表单提交,同时又需要对table的字段进行校验,效果如图所示: 这个校验中,最关键的问题... <div class=app-container> <el-table-colum

    Vue-Router实现组件间跳转的三种方法

    通过VueRouter来实现组件之间的跳转,供大家参考,具体内容如下 提供了3种方式实现跳转: ①直接修改地址栏中的路由地址 <!doctype html> <... ... <div id=container> <p>{{msg}} <!--通过router-view

    jQuery数组处理函数整理

    2、$.each(container, callback(key,value))  对container的每一项进行迭代,为每一项调用回调函数callback。 container 可以是对象或数组。如果是js对象,则迭代其每个属性;如果是数组,则迭代其每个元素。  ...

    jQuery实现切换字体大小的方法

    本文实例讲述了jQuery实现切换字体大小的方法。分享给大家供大家参考。具体实现方法如下: 代码如下:$.fn.switchSize = function(settings) { // defaults settings ...var $container = $(settings.cont

    JQuery 操作Javascript对象和数组的工具函数小结

    $.each(container, callback) 对container的每一项进行迭代,为每一项调用回调函数callback。 container 可以是对象或数组。如果是js对象,则迭代其每个属性;如果是数组,则迭代其每个元素。 callback 回调函数。...

    vue双花括号的使用方法 附练习题

    本文实例为大家分享了vue双花括号的具体代码,供大家参考,具体内容如下 ... <div id=container> <h1>{{msg}} <h4>{{cart.brand}} <!--在双花括号中 执行运算表达式 --> <p> 3 + 5 = {{ 3 + 5 }} <sc

    jquery实现简单Tab切换菜单效果

    本文实例为大家分享了... <div class=container> <li class=active><a>导航菜单</a></li> <li><a>TAB标签</a></li> <div class=tab_container> <div id=tab1 class=tab_content style=display: block;

Global site tag (gtag.js) - Google Analytics