AWS RoboMaker 相容容器的需求 - AWS RoboMaker

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

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

AWS RoboMaker 相容容器的需求

您必須滿足一組要求,才能執行AWS RoboMaker 相容的容器 (容器映像) 並成功啟動模擬。如果您符合這些要求,但仍無法執行模擬,請參閱 模擬任務模擬 WorldForge

您的容器映像無法在 Dockerfile VOLUME中使用。如果 VOLUME 位於 Dockerfile 中,您的模擬將會失敗並顯示4XX錯誤碼。

您的容器映像無法在 Dockerfile EXPOSE中使用。如果 EXPOSE 位於 Dockerfile 中, AWS RoboMaker WILL 會使用4XX錯誤碼失敗模擬。

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

您無法在 Dockerfile CMD中指定 。如果您這樣做, AWS RoboMaker 會使用套件名稱覆寫它並啟動檔案。反之,您可以在CreateSimulationJob請求中的每個模擬應用程式或機器人應用程式的 launchConfig 中使用 command 參數,以提供啟動命令的清單。這在模擬任務CMD中設定為 。command 的範例為 ["/bin/bash", "-c", "sleep 365d"]

如果您想要將工具新增至模擬任務,則必須將 安裝bash到容器映像。您的工具是透過 啟動["/bin/bash", "-c", "<command>"]

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

  • ROS 主伺服器

  • Gazebo Master

  • ROS IP

您無法自訂容器中/etc/resolv.conf的檔案。 會使用自己的檔案 AWS RoboMaker 覆寫檔案。

如果您在 上執行 Dockerfile AWS,則無法 MOUNT 映像。如果您在 Dockerfile Mount中指定 , AWS RoboMaker WILL 會失敗您的模擬,並顯示4XX錯誤碼。

您的容器映像無法使用預設 Docker seccomp設定檔封鎖的系統呼叫。如需有關封鎖系統呼叫的資訊,請參閱 Seccomp 安全設定檔

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

在容器映像中,您可以將 指定USER為名稱或 UID:GID。如果您的容器映像沒有 UID,則其預設值為 1000

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

不支援下列執行時間組態。

Docker Run 引數 描述
1 -\-add-host 新增自訂host-to-IP(host:ip)
2 -\-attach , -a 連接至 STDIN、STDOUT 或 STDERR
3 -\-blkio-weight 封鎖 IO (相對權重),介於 10 到 1000 之間,或 0 以停用 (預設 0)
4 -\-blkio-weight-devi ce 區塊 IO 權重 (相對裝置權重)
5 -\-cap-add 新增 Linux 功能
6 -\-cap-drop 捨棄 Linux 功能
7 -\-cgroup-parent 容器的選用父系 cgroup
8 -\-cgroupns API 1.41+ <https://docs.d ocker.com/engine/api/ v1.41/>__Cgroup 命名空間以使用 (主機|私有) '主機':在 Docker 主機的 cgroup 命名空間 '私有' 中執行容器:在自己的私有 cgroup 命名空間 '' 中執行容器:使用 協助程式上 default-cgroupns-mode 選項所設定的 cgroup 命名空間 (預設)
9 -\-cidfile 將容器 ID 寫入 檔案
10 -\-cpu-count CPU 計數 (僅限 Windows)
11 -\-cpu-percent CPU 百分比 (僅限 Windows)
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/>__以微秒為單位限制 CPU 即時期間
15 -\-cpu-rt-runtime API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__以微秒為單位限制 CPU 即時執行時間
16 -\-cpu-shares , -c CPU 共用 (相對權重)
17 -\-cpus API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__CPUs 數量
18 -\-cpuset-cpus 允許執行CPUs (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 限制裝置的寫入速率 (每秒 I/O)
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+ <https://docs.d ocker.com/engine/api/ v1.40/>__GPU 裝置 ('all' to pass all GPUs)
35 -\-group-add 新增要加入的其他群組
36 -\-health-cmd 要執行以檢查運作狀態的命令
37 -\-health-interval 執行檢查之間的時間 (msm|h) (預設 0s)
38 -\-health-retries 報告運作狀態不佳時需要連續失敗
39 -\-health-start-peri od API 1.29+ <https://docs.d ocker.com/engine/api/ v1.29/>__開始運作狀態重試倒數計時 (msm|h) (預設 0 秒) 之前,容器要初始化的開始期間
40 -\-health-timeout 允許執行一次檢查的最長時間 (msm|h) (預設 0s)
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 系統磁碟機的 IOps 上限 (僅限 Windows)
47 -\-ip IPv4 地址 (例如 172.30.100.104)
48 -\-ip6 IPv6 地址 (例如 2001:db8::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:c6:0a: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 停用任何容器指定的 HEALTHCHECK
69 -\-oom-kill-disable 停用 OOM Killer
70 -\-oom-score-adj 調校主機的 OOM 偏好設定 (-1000 到 1000)
71 -\-pid 要使用的 PID 命名空間
72 -\-pids-limit 調校容器 pids 限制 (設定 -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 /dev/shm 的大小
84 -\-sig-proxy Proxy 接收到程序的訊號
85 -\-stop-timeout API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__停止容器的逾時 (以秒為單位)
86 -\-storage-opt 容器的儲存驅動程式選項
87 -\-sysctl 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 WILL 會失敗錯誤4XX碼的模擬。

  • 必須有 V2 映像資訊清單,結構描述版本 2 相容。

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

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

    • 機器人作業系統 (ROS) Melodic – ubuntu:bionic

    • 機器人作業系統 (ROS) 2 Foxy – ubuntu:focal

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

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

若要支援 GUI 串流,建議您安裝和來源下列二進位檔:

  • devilspie

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

您的容器映像:

  • 如果在應用程式中使用 OpenGL,則必須安裝 glvnd。

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

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

  • 如果在應用程式中使用 Vulkan APIs則必須有 Vulkan 1.2 版或更低版本。

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

注意

AWS RoboMaker 僅支援 Vulkan 進行螢幕外轉譯,且無法在 GUI 顯示器中運作。因此,false如果使用 Vulkan,則 streamUI 應該設定為 。

如需如何建立 GPU 映像的詳細說明,請參閱建立映像以執行 GPU 應用程式

容器映像必須提供用於來源的進入點指令碼。進入點指令碼必須具有 exec "${@:1}"作為最後一行,以便 AWS RoboMaker 可以執行進入點指令碼。執行進入點指令碼可讓您使用 roslaunch package-name命令。 launch-file 命令來執行容器。

您的容器映像無法在 Dockerfile VOLUME中使用。如果 VOLUME 位於 Dockerfile 中,您的模擬將會失敗並顯示4XX錯誤碼。

系統會忽略 Dockerfile 中的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

您無法在 Dockerfile CMD中指定 。如果您這樣做, AWS RoboMaker 會在模擬 中使用 命令覆寫 launchConfig

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

  • ROS 主伺服器

  • Gazebo Master

  • ROS IP

您無法自訂容器中/etc/resolv.conf的檔案。 會使用自己的檔案 AWS RoboMaker 覆寫檔案。

如果您在 上執行 Dockerfile AWS,則無法 MOUNT 映像。如果您在 Dockerfile Mount中指定 , AWS RoboMaker WILL 會失敗您的模擬,並顯示4XX錯誤碼。

您的容器映像無法使用預設 Docker seccomp設定檔封鎖的系統呼叫。如需有關封鎖系統呼叫的資訊,請參閱 Seccomp 安全設定檔

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

在容器映像中,您可以將 指定USER為名稱或 UID:GID。如果您的容器映像沒有 UID,則其預設值為 1000

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

不支援下列執行時間組態。

Docker Run 引數 描述
1 --add-host 新增自訂host-to-IP(host:ip)
2 --attach , -a 連接至 STDIN、STDOUT 或 STDERR
3 --blkio-weight 封鎖 IO (相對權重),介於 10 到 1000 之間,或 0 以停用 (預設 0)
4 --blkio-weight-devi ce 區塊 IO 權重 (相對裝置權重)
5 --cap-add 新增 Linux 功能
6 --cap-drop 捨棄 Linux 功能
7 --cgroup-parent 容器的選用父 cgroup
8 --cgroupns API 1.41+ <https://docs.d ocker.com/engine/api/ v1.41/>__Cgroup 命名空間使用 (host|private) 'host':在 Docker 主機的 cgroup 命名空間 'private' 中執行容器:在自己的私有 cgroup 命名空間 '' 中執行容器:使用 協助程式上 default-cgroupns-mode 選項所設定的 cgroup 命名空間 (預設)
9 --cidfile 將容器 ID 寫入 檔案
10 --cpu-count CPU 計數 (僅限 Windows)
11 --cpu-percent CPU 百分比 (僅限 Windows)
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/>__以微秒為單位限制 CPU 即時期間
15 --cpu-rt-runtime API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__以微秒為單位限制 CPU 即時執行時間
16 --cpu-shares , -c CPU 共用 (相對權重)
17 --cpus API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__CPUs 數量
18 --cpuset-cpus 允許執行CPUs (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+ <https://docs.d ocker.com/engine/api/ v1.40/>__GPU 裝置,以新增至容器 ('all' to pass all GPUs)
35 --group-add 新增要加入的其他群組
36 --health-cmd 執行 以檢查運作狀態
37 --health-interval 執行檢查之間的時間 (msm|h) (預設 0s)
38 --health-retries 報告運作狀態不佳時需要連續失敗
39 --health-start-peri od API 1.29+ <https://docs.d ocker.com/engine/api/ v1.29/>__開始運作狀態重試倒數計時 (msm|h) (預設 0 秒) 之前,容器要初始化的開始期間
40 --health-timeout 允許執行一次檢查的最長時間 (msm|h) (預設 0s)
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 系統磁碟機的 IOps 上限 (僅限 Windows)
47 --ip IPv4 地址 (例如 172.30.100.104)
48 --ip6 IPv6 地址 (例如 2001:db8::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:c6:0a: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 停用任何容器指定的 HEALTHCHECK
69 --oom-kill-disable 停用 OOM Killer
70 --oom-score-adj 調校主機的 OOM 偏好設定 (-1000 到 1000)
71 --pid 要使用的 PID 命名空間
72 --pids-limit 調校容器 pids 限制 (設定 -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 /dev/shm 的大小
84 --sig-proxy Proxy 接收到程序的訊號
85 --stop-timeout API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__停止容器的逾時 (以秒為單位)
86 --storage-opt 容器的儲存驅動程式選項
87 --sysctl 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錯誤碼失敗模擬。