要求AWS RoboMaker相容容器 - AWS RoboMaker

支援終止通知:在 2025 年 9 月 10 日, AWS 將停止對 的支援 AWS RoboMaker。2025 年 9 月 10 日後,您將無法再存取 AWS RoboMaker 主控台或 AWS RoboMaker 資源。如需有關轉換至 AWS Batch 以協助執行容器化模擬的詳細資訊,請造訪此部落格文章

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

要求AWS RoboMaker相容容器

您必須符合一組需求才能執行AWS RoboMaker兼容容器(容器圖像)並成功啟動模擬。如果您符合這些需求,但仍無法執行模擬,請參閱模擬工作仿真 WorldForge

您的容器映像無法使用VOLUME在碼頭文件。如果VOLUME在碼頭文件中,您的模擬失敗與 a4XX錯誤代碼。

您的容器映像無法使用EXPOSE在碼頭文件。如果EXPOSE在碼頭文件中,AWS RoboMaker 使您的模擬失敗4XX錯誤代碼。

您的容器映像必須壓縮的大小小小於或等於 20 GB。如果您的容器映像檔壓縮大於 20 GB,AWS RoboMaker 使模擬失敗4XX錯誤代碼。

您無法指定CMD在你的碼頭文件。如果你這樣做,AWS RoboMaker用包名稱和啟動文件覆蓋它。相反,您可以使用command中的參數launchConfig您的每個模擬應用程式或機器人應用程式CreateSimulationJob請求提供啟動命令列表。這被設置為CMD在模擬工作中。command 的範例為 ["/bin/bash", "-c", "sleep 365d"]

如果要將工具加入至模擬工作,您可以必須安裝bash到您的容器映像。您的工具啟動時["/bin/bash", "-c", "<command>"]

如果您的容器正在執行 ROS,且您需要機器人應用程式與模擬應用程式之間的通訊,您應該設定下列機器人架構:

  • 羅斯大師

  • 涼亭大師

  • 羅斯 IP

您無法自訂/etc/resolv.conf文件在你的容器中。AWS RoboMaker用自己的文件覆蓋文件。

如果您正在運行碼頭文件AWS,你不能安裝圖像。如果您指定Mount在碼頭文件中,AWS RoboMaker 使您的模擬失敗4XX錯誤代碼。

您的容器映像無法使用默認 Docker 阻止的系統調用seccomp設定檔。如需封鎖系統呼叫的相關資訊,請參閱區段安全性設定檔

若要指定執行映像的使用者,您可以指定USER碼頭文件中的關鍵字。如果您未指定使用者,AWS RoboMaker使用容器中的根使用者。

在容器映像檔中,您可以指定USER作為一個名字或UID:GID。如果您的容器映像檔沒有 UID,則預設值為1000

您的容器映像檔無法儲存資料/opt/amazon/robomaker或在其任何子文件夾中。只有AWS RoboMaker可以使用該目錄。如果您使用該目錄,您的模擬可能無法正常運作。

不支援下列執行階段設定。

碼頭運行參數 描述
1 -\-add-host 新增自訂主機對 IP 對應 (主機:ip)
2 -\-attach , -a 連接到標準輸入,標準輸出或標準錯誤
3 -\-blkio-weight 區塊 IO (相對權重),介於 10 到 1000 之間,或 0 停用 (預設值為 0)
4 -\-blkio-weight-devi ce 區塊 IO 重量 (相對裝置重量)
5 -\-cap-add 新增功能
6 -\-cap-drop 刪除功能
7 -\-cgroup-parent 容器的選擇性父群組
8 -\-cgroupns API 1.41+__C Group < https://docs.d ocker.com/engine/api/ v1.41/> 命名空間以使用(主機 | 私人)'主機':在 Docker 主機的 cgroup 命名空間「私有」中運行容器:在其自己的私有 cgroup 命名空間中運行容器「:使用 cgroup 命名空間配置default-cgroupns-mode守護進程上的選項(默認)
9 -\-cidfile 將容器 ID 寫入檔案
10 -\-cpu-count CPU 數量 (僅限視窗)
11 -\-cpu-percent CPU 百分比 (僅限視窗)
12 -\-cpu-period 限制 CPU CFS (完全公平的排程器) 期間
13 -\-cpu-quota 限制 CPU CFS (完全公平的排程器) 配額
14 -\-cpu-rt-period API 1.25+__ 限制中 < https://docs.d ocker.com/engine/api/ v1.25/> 央處理器即時週期 (以微秒為單位)
15 -\-cpu-rt-runtime API 1.25+__ 限制 < https://docs.d ocker.com/engine/api/ v1.25/> CPU 即時執行時間 (以微秒為單位)
16 -\-cpu-shares , -c CPU 佔用率 (相對權重)
17 -\-cpus 應用程式介面 1.25 加 __ < https://docs.d ocker.com/engine/api/ v1.25/> 的 CPU 數量
18 -\-cpuset-cpus 允許執行的 CPU (0-3, 0,1)
19 -\-cpuset-mems 允許執行的 MEMS (0-3, 0,1)
20 -\-detach , -d 在後台運行容器並打印容器 ID
21 -\-detach-keys 覆寫分離容器的按鍵順序
22 -\-device 將主機裝置新增至容器
23 -\-device-cgroup-rul e 將規則新增至 cgroup 允許的裝置清單
24 -\-device-read-bps 限制裝置的讀取速率 (每秒位元組數)
25 -\-device-read-iops 限制裝置的讀取速率 (每秒 IO)
26 -\-device-write-bps 限制裝置的寫入速率 (每秒位元組數)
27 -\-device-write-iops 限制裝置的寫入速率 (每秒 IO)
28 -\-disable-content-t rust 略過圖片驗證
29 -\-dns 設定自訂 DNS 伺服器
30 -\-dns-opt 設定 DNS 選項
31 -\-dns-option 設定 DNS 選項
32 -\-dns-search 設定自訂 DNS 搜尋網域
33 -\-domainname 容器 NIS 網域名稱
34 -\-gpus API 1.40+__GPU < https://docs.d ocker.com/engine/api/ v1.40/> 設備添加到容器(「全部」以通過所有 GPU)
35 -\-group-add 新增要加入的其他群組
36 -\-health-cmd 執行檢查健康狀態的命令
37 -\-health-interval 執行檢查之間的時間 (msm|h) (預設為 0)
38 -\-health-retries 報告健康狀況不良所需的連續失敗
39 -\-health-start-peri od API 1.29+__ 在開始健康重試倒計時(msm|h)之前初始化容器的開始 < https://docs.d ocker.com/engine/api/ v1.29/> 期間(默認為 0)
40 -\-health-timeout 允許執行一項檢查的最長時間 (msm|h) (預設為 0)
4.1 -\-help 列印用量
42 -\-hostname , -h 容器主機名稱
43 -\-init API 1.25+__ 在容器內運行 < https://docs.d ocker.com/engine/api/ v1.25/> 一個初始化,該容器轉發信號並重新執行進程
44 -\-interactive , -i 即使未連接,也要保持 STDIN 開啟
45 -\-io-maxbandwidth 系統磁碟機的最大 IO 頻寬限制 (僅適用於 Windows)
46 -\-io-maxiops 系統磁碟機的最大 IOP 限制 (僅適用於 Windows)
47 -\-ip IPv4 位址 (例如:
48 -\-ip6 IPv6 位址 (例如:二零零一八:: 33)
49 -\-ipc 要使用的 IPC 模式
50 -\-isolation 容器隔離技術
51 -\-kernel-memory 核心記憶體限制
52 -\-label , -l 在容器上設置元數據
53 -\-label-file 讀取以行分隔的標籤檔案
54 -\-link 將鏈接添加到另一個容器
55 -\-link-local-ip 容器 IPv4/IPv6 連結-本機位址
56 -\-log-driver 容器的記錄驅動程式
57 -\-log-opt 記錄驅動選項
58 -\-mac-address 容器 MAC 位址 (例如,92: d0: c 6:0 a: 29:33)
59 -\-memory , -m Memory limit (記憶體限制)
60 -\-memory-reservation 記憶體軟限制
61 -\-memory-swap 交換限制等於內存加交換:'-1' 啟用無限制交換
62 -\-memory-swappiness 調整容器記憶體交換率 (0 至 100)
63 -\-name 為容器指派名稱
64 -\-net 將容器連接到網路
65 -\-net-alias 新增容器的網路範圍別名
66 -\-network 將容器連接到網路
67 -\-network-alias 新增容器的網路範圍別名
68 -\-no-healthcheck 停用任何容器指定的健康檢查
69 -\-oom-kill-disable 停用 OOM 殺手
70 -\-oom-score-adj 調整主機的 OOM 偏好設定 (-1000 到 1000)
71 -\-pid 使用的 PID 命名空間
72 -\-pids-limit 調整容器 PID 限制(設置 -1 無限)
73 -\-platform API 1.32+__ 如果服務器具有多平台功能,則設置 < https://docs.d ocker.com/engine/api/ v1.32/> 平台
74 -\-privileged 將延伸權限授予此容器
75 -\-publish , -p 將容器的連接埠發佈到主機
76 -\-publish-all , -P 將所有公開的連接埠發佈到隨機連
77 -\-pull 運行前拉圖像(「總是」「從不」)
78 -\-read-only 將容器的根檔案系統掛載為唯讀
79 -\-restart 當容器結束時要套用的重新啟動原則
80 -\-rm 當容器退出時自動移除
81 -\-runtime 用於此容器的執行階段
82 -\-security-opt 安全性選項
83 -\-shm-size /開發/shm 的大小
84 -\-sig-proxy 代理接收到的信號的過程
85 -\-stop-timeout API 1.25 + __ 停止容器的超時 < https://docs.d ocker.com/engine/api/ v1.25/>(以秒為單位)
86 -\-storage-opt 容器的儲存驅動程式選項
87 -\-sysctl 系統選項
88 -\-tmpfs 掛載一個 tmpfs 目錄
89 -\-tty , -t 分配一個偽 TTY
90 -\-ulimit 無限制選項
91 -\-userns 使用的用戶命名空間
92 -\-uts 使用的 UTS 命名空間
93 -\-volume , -v 綁定掛載一個卷
94 -\-volume-driver 容器的選用磁碟區驅動程式
95 -\-volumes-from 從指定的容器掛載磁碟區

如果您使用先前的執行階段組態執行模擬工作,AWS RoboMaker 使您的模擬失敗4XX錯誤代碼。

您的容器映像檔:

  • 必須開放容器倡議 (OCI)投訴。

  • 必須是針對 X86_64 架構所建置的。如果它是為不同的架構構建的,AWS RoboMaker 使模擬失敗4XX錯誤代碼。

  • 必須小於或等於 40 GB 的大小未壓縮。如果您的容器映像檔大於 40 GB 未壓縮,AWS RoboMaker 使模擬失敗4XX錯誤代碼。

  • 必須有一個 V2 圖像清單,模式版本 2 兼容。

  • 必須使用以 Linux 為基礎的基礎映像檔。如果您不使用以 Linux 為基礎的基礎映像檔,AWS RoboMaker 使模擬失敗4XX錯誤代碼。

  • 必須使用彼此相容的開發環境和作業系統。以下是開發環境與作業系統之相容組合的範例:

    • 機器人作業系統 (ROS) 旋律 — 關於仿生

    • 機器人操作系統 (ROS) 2 狡猾 — 主要:焦

    如果您不使用機器人架構和作業系統的相容組合,您的模擬可能會顯示非預期的行為。

以下是容器映像檔的二進位需求:

若要支援 GUI 串流,我們建議您安裝並採購下列二進位檔案:

  • devilspie

我們建議您的容器映像檔為其可執行檔使用絕對路徑。我們也建議容器內的可執行檔正確執行。您的模擬如果找不到可執行文件的路徑,則失敗。

您的容器映像檔:

  • 必須如果在您的應用程序中使用 OpenGL,請安裝 glvnd。

  • 必須如果在您的應用程序中使用 CUDA,則具有 NVIDIA CUDA 11.2 或更低版本。

  • 必須如果在您的應用程序中使用 OpenGL,則使用 OpenGL 版本 4.6 或更低版本。

  • 必須如果在您的應用程序中使用 Vulkan API,則具有 Vulkan 1.2 或更低版本。

  • 必須如果在您的應用程式中使用 OpenCL,請使用 OpenCL 版本 1.2 或更低版本。

注意

AWS RoboMaker僅支持 Vulkan 用於屏幕外渲染,並且在 GUI 顯示器中不可操作。因此,流 UI 應該設置為false如果使用福爾坎。

如需如何建立 GPU 影像的詳細指示,請參閱建立影像以執行 GPU 應用程式

容器映像檔必須提供用於採購的入口點腳本。入口點腳本必須exec "${@:1}"作為最後一行,以便AWS RoboMaker可以運行入口點腳本。執行入口點指令碼可讓您使用roslaunch package-name指令。啟動文件命令來運行容器。

您的容器映像無法使用VOLUME在碼頭文件。如果VOLUME在碼頭文件中,您的模擬失敗與 a4XX錯誤代碼。

EXPOSE碼頭文件中的關鍵字被忽略AWS RoboMaker。公開的任何連接埠EXPOSE系統不會自動公開關鍵字。如果您想在模擬中公開端口,則可以使用AWS RoboMaker 連接埠轉送組態。

AWS RoboMaker使用下列環境變數。如果您執行模擬AWS,AWS RoboMaker會覆寫您為這些環境變數指定的任何值:

  • ROBOMAKER*

  • DCV_VIRTUAL_SESSION

  • XDG_SESSION_ID

  • DCV_SESSION_ID

  • XDG_SESSION_TYPE

  • XDG_RUNTIME_DIR

  • SHLVL

  • XAUTHORITY

您無法指定CMD在你的碼頭文件。如果你這樣做,AWS RoboMaker使用模擬中的指令覆寫launchConfig

如果您的容器正在執行 ROS,且您需要機器人應用程式與模擬應用程式之間的通訊,您應該設定下列機器人架構:

  • 羅斯大師

  • 涼亭大師

  • 羅斯 IP

您無法自訂/etc/resolv.conf文件在你的容器中。AWS RoboMaker用自己的文件覆蓋文件。

如果您正在運行碼頭文件AWS,你不能安裝圖像。如果您指定Mount在碼頭文件中,AWS RoboMaker 使您的模擬失敗4XX錯誤代碼。

您的容器映像無法使用默認 Docker 阻止的系統調用seccomp設定檔。如需封鎖系統呼叫的相關資訊,請參閱區段安全性設定檔

若要指定執行映像的使用者,您可以指定USER碼頭文件中的關鍵字。如果您未指定使用者,AWS RoboMaker使用容器中的根使用者。

在容器映像檔中,您可以指定USER作為一個名字或UID:GID。如果您的容器映像檔沒有 UID,則預設值為1000

您的容器映像檔無法儲存資料/opt/amazon/robomaker或在其任何子文件夾中。只有AWS RoboMaker可以使用該目錄。如果您使用該目錄,您的模擬可能無法正常運作。

不支援下列執行階段設定。

碼頭運行參數 描述
1 --add-host 新增自訂主機對 IP 對應 (主機:ip)
2 --attach , -a 連接到標準輸入,標準輸出或標準錯誤
3 --blkio-weight 區塊 IO (相對權重),介於 10 到 1000 之間,或 0 停用 (預設值為 0)
4 --blkio-weight-devi ce 區塊 IO 重量 (相對裝置重量)
5 --cap-add 新增功能
6 --cap-drop 刪除功能
7 --cgroup-parent 容器的選擇性父群組
8 --cgroupns API 1.41+__C Group < https://docs.d ocker.com/engine/api/ v1.41/> 命名空間以使用(主機 | 私人)'主機':在 Docker 主機的 cgroup 命名空間「私有」中運行容器:在其自己的私有 cgroup 命名空間中運行容器「:使用 cgroup 命名空間配置default-cgroupns-mode守護進程上的選項(默認)
9 --cidfile 將容器 ID 寫入檔案
10 --cpu-count CPU 數量 (僅限視窗)
11 --cpu-percent CPU 百分比 (僅限視窗)
12 --cpu-period 限制 CPU CFS (完全公平的排程器) 期間
13 --cpu-quota 限制 CPU CFS (完全公平的排程器) 配額
14 --cpu-rt-period API 1.25+__ 限制中 < https://docs.d ocker.com/engine/api/ v1.25/> 央處理器即時週期 (以微秒為單位)
15 --cpu-rt-runtime API 1.25+__ 限制 < https://docs.d ocker.com/engine/api/ v1.25/> CPU 即時執行時間 (以微秒為單位)
16 --cpu-shares , -c CPU 佔用率 (相對權重)
17 --cpus 應用程式介面 1.25 加 __ < https://docs.d ocker.com/engine/api/ v1.25/> 的 CPU 數量
18 --cpuset-cpus 允許執行的 CPU (0-3, 0,1)
19 --cpuset-mems 允許執行的 MEMS (0-3, 0,1)
20 --detach , -d 在後台運行容器並打印容器 ID
21 --detach-keys 覆寫分離容器的按鍵順序
22 --device 將主機裝置新增至容器
23 --device-cgroup-rul e 將規則新增至 cgroup 允許的裝置清單
24 --device-read-bps 限制裝置的讀取速率 (每秒位元組數)
25 --device-read-iops 限制裝置的讀取速率 (每秒 IO)
26 --device-write-bps 限制裝置的寫入速率 (每秒位元組數)
27 --device-write-iops 限制裝置的寫入速率 (每秒 IO)
28 --disable-content-t rust 略過圖片驗證
29 --dns 設定自訂 DNS 伺服器
30 --dns-opt 設定 DNS 選項
31 --dns-option 設定 DNS 選項
32 --dns-search 設定自訂 DNS 搜尋網域
33 --domainname 容器 NIS 網域名稱
34 --gpus API 1.40+__GPU < https://docs.d ocker.com/engine/api/ v1.40/> 設備添加到容器(「全部」以通過所有 GPU)
35 --group-add 新增要加入的其他群組
36 --health-cmd 運行以檢查健康
37 --health-interval 執行檢查之間的時間 (msm|h) (預設為 0)
38 --health-retries 報告健康狀況不良所需的連續失敗
39 --health-start-peri od API 1.29+__ 在開始健康重試倒計時(msm|h)之前初始化容器的開始 < https://docs.d ocker.com/engine/api/ v1.29/> 期間(默認為 0)
40 --health-timeout 允許執行一項檢查的最長時間 (msm|h) (預設為 0)
4.1 --help 列印用量
42 --hostname , -h 容器主機名稱
43 --init API 1.25+__ 在容器內運行 < https://docs.d ocker.com/engine/api/ v1.25/> 一個初始化,該容器轉發信號並重新執行進程
44 --interactive , -i 即使未連接,也要保持 STDIN 開啟
45 --io-maxbandwidth 系統磁碟機的最大 IO 頻寬限制 (僅適用於 Windows)
46 --io-maxiops 系統磁碟機的最大 IOP 限制 (僅適用於 Windows)
47 --ip IPv4 位址 (例如:
48 --ip6 IPv6 位址 (例如:二零零一八:: 33)
49 --ipc 要使用的 IPC 模式
50 --isolation 容器隔離技術
51 --kernel-memory 核心記憶體限制
52 --label , -l 在容器上設置元數據
53 --label-file 讀取以行分隔的標籤檔案
54 --link 將鏈接添加到另一個容器
55 --link-local-ip 容器 IPv4/IPv6 連結-本機位址
56 --log-driver 容器的記錄驅動程式
57 --log-opt 記錄驅動程式選
58 --mac-address 容器 MAC 位址 (例如,92: d0: c 6:0 a: 29:33)
59 --memory , -m Memory limit (記憶體限制)
60 --memory-reservation 記憶體軟限制
61 --memory-swap 交換限制等於內存加交換:'-1' 啟用無限制交換
62 --memory-swappiness 調整容器記憶體交換率 (0 至 100)
63 --name 為容器指派名稱
64 --net 將容器連接到網路
65 --net-alias 新增容器的網路範圍別名
66 --network 將容器連接到網路
67 --network-alias 新增容器的網路範圍別名
68 --no-healthcheck 停用任何容器指定的健康檢查
69 --oom-kill-disable 停用 OOM 殺手
70 --oom-score-adj 調整主機的 OOM 偏好設定 (-1000 到 1000)
71 --pid 使用的 PID 命名空間
72 --pids-limit 調整容器 PID 限制(設置 -1 無限)
73 --platform API 1.32+__ 如果服務器具有多平台功能,則設置 < https://docs.d ocker.com/engine/api/ v1.32/> 平台
74 --privileged 將延伸權限授予此容器
75 --publish , -p 將容器的連接埠發佈到主機
76 --publish-all , -P 將所有公開的連接埠發佈到隨機連
77 --pull 運行前拉圖像(「總是」「從不」)
78 --read-only 將容器的根檔案系統掛載為唯讀
79 --restart 當容器結束時要套用的重新啟動原則
80 --rm 當容器退出時自動移除
81 --runtime 用於此容器的執行階段
82 --security-opt 安全性選項
83 --shm-size /開發/shm 的大小
84 --sig-proxy 代理接收到的信號的過程
85 --stop-timeout API 1.25 + __ 停止容器的超時 < https://docs.d ocker.com/engine/api/ v1.25/>(以秒為單位)
86 --storage-opt 容器的儲存驅動程式選項
87 --sysctl 系統選項
88 --tmpfs 掛載一個 tmpfs 目錄
89 --tty , -t 分配一個偽 TTY
90 --ulimit 無限制選項
91 --userns 使用的用戶命名空間
92 --uts 使用的 UTS 命名空間
93 --volume , -v 綁定掛載一個卷
94 --volume-driver 容器的選用磁碟區驅動程式
95 --volumes-from 從指定的容器掛載磁碟區

如果您使用先前的執行階段組態執行模擬工作,AWS RoboMaker 使您的模擬失敗4XX錯誤代碼。