支援終止通知:在 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
錯誤代碼。