Requisitos para contêineres AWS RoboMaker compatíveis - AWS RoboMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Requisitos para contêineres AWS RoboMaker compatíveis

Você deve atender a um conjunto de requisitos para executar um contêiner AWS RoboMaker compatível (imagem de contêiner) e iniciar uma simulação com sucesso. Se você atendeu a esses requisitos e ainda está tendo problemas para executar a simulação, consulte Trabalhos de simulação e Simulation WorldForge.

Sua imagem de contêiner não pode usar VOLUME no Dockerfile. Se VOLUME estiver no Dockerfile, sua simulação FALHARÁ com um código de erro 4XX.

Sua imagem de contêiner não pode usar EXPOSE no Dockerfile. Se EXPOSE estiver no Dockerfile, sua simulação AWS RoboMaker FALHARÁ com um código de erro 4XX.

A imagem do contêiner DEVE ter tamanho compactado de 20 GB ou menos. Se a imagem do contêiner for maior que 20 GB compactada, a simulação AWS RoboMaker FALHARÁ com um código de erro 4XX.

Você não pode especificar CMD em seu Dockerfile. Se fizer isso, AWS RoboMaker o sobrescreve pelo nome do pacote e pelo arquivo de inicialização. Em vez disso, você pode usar o parâmetro command em cada aplicativo launchConfig de simulação ou aplicativo de robô em sua solicitação CreateSimulationJob para fornecer uma lista de comandos de inicialização. Isso é definido como CMD no trabalho de simulação. Um exemplo de command é ["/bin/bash", "-c", "sleep 365d"].

Se quiser adicionar ferramentas ao seu trabalho de simulação, você DEVE instalar bash na imagem do contêiner. Suas ferramentas são lançadas com ["/bin/bash", "-c", "<command>"].

Se seu contêiner estiver executando ROS e você precisar de comunicação entre seu aplicativo de robô e seu aplicativo de simulação, você deve configurar as seguintes estruturas de robótica:

  • ROS Master

  • Gazebo Master

  • ROS IP

Não é possível personalizar o arquivo /etc/resolv.conf no contêiner. O AWS RoboMaker sobrescreve o arquivo com seu próprio arquivo.

Se você estiver executando seu Dockerfile no AWS, não poderá MONTAR a imagem. Se você especificar Mount no Dockerfile, AWS RoboMaker FALHARÁ em sua simulação com um código de erro 4XX.

Sua imagem de contêiner não pode usar chamadas de sistema bloqueadas pelo perfil seccomp padrão do Docker. Para obter informações sobre chamadas de sistema bloqueadas, consulte Perfis de segurança Seccomp.

Para especificar um usuário que executa uma imagem, você pode especificar uma palavra-chave USER no Dockerfile. Se você não especificar um usuário, o AWS RoboMaker use o usuário raiz no contêiner.

Na imagem do contêiner, você pode especificar o USER como um nome ou um UID:GID. Se a imagem do contêiner não tiver um UID, ela terá um valor padrão de 1000.

Sua imagem de contêiner não pode armazenar dados em /opt/amazon/robomaker ou em nenhuma de suas subpastas. Somente o AWS RoboMaker pode usar esse diretório. Sua simulação pode não se comportar adequadamente se você usar esse diretório.

As configurações do runtime apresentadas a seguir não têm suporte.

Argumento do Docker Run Descrição
1 -\-add-host Adicionar um mapeamento personalizado de host para IP (host:ip)
2 -\-attach , -a Anexar a STDIN, STDOUT ou STDERR
3 -\-blkio-weight Bloquear IO (peso relativo), entre 10 e 1.000, ou 0 para desativar (padrão 0)
4 -\-blkio-weight-devi ce Peso de E/S do bloco (peso relativo do dispositivo)
5 -\-cap-add Adicionar recursos do Linux
6 -\-cap-drop Abandonar recursos do Linux
7 -\-cgroup-parent Cgroup pai opcional para o contêiner
8 -\-cgroupns API 1.41+ <https://docs.d ocker.com/engine/api/ v1.41/>__Namespace do Cgroup a ser usado (host|private) 'host': Executa o contêiner no namespace do cgroup do host do Docker 'private': Executa o contêiner em seu próprio namespace de cgroup privado '': Usar o espaço de nomes do cgroup conforme configurado pela opção default-cgroupns-mode no daemon (padrão)
9 -\-cidfile Gravar o ID do contêiner no arquivo
10 -\-cpu-count Contagem de CPU (somente Windows)
11 -\-cpu-percent Porcentagem de CPU (somente Windows)
12 -\-cpu-period Limitar o período CFS (Completely Fair Scheduler) da CPU
13 -\-cpu-quota Limitar a cota de CPU CFS (Completely Fair Scheduler)
14 -\-cpu-rt-period API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__Limitar o período em tempo real da CPU em microssegundos
15 -\-cpu-rt-runtime API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__Limitar o runtime em tempo real da CPU em microssegundos
16 -\-cpu-shares , -c Compartilhamentos de CPU (peso relativo)
17 -\-cpus API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__Number de CPUs
18 -\-cpuset-cpus CPUs nas quais permitir a execução (0-3, 0,1)
19 -\-cpuset-mems MEMs nos quais permitir a execução (0-3, 0,1)
20 -\-detach , -d Executar o contêiner em segundo plano e imprima o ID do contêiner
21 -\-detach-keys Substituir a sequência de teclas para separar um contêiner
22 -\-device Adicionar um dispositivo host ao contêiner
23 -\-device-cgroup-rul e Adicionar uma regra à lista de dispositivos permitidos do cgroup
24 -\-device-read-bps Limitar a taxa de leitura (bytes por segundo) de um dispositivo
25 -\-device-read-iops Limitar a taxa de leitura (IO por segundo) de um dispositivo
26 -\-device-write-bps Limitar a taxa de gravação (bytes por segundo) em um dispositivo
27 -\-device-write-iops Limitar a taxa de gravação (IO por segundo) para um dispositivo
28 -\-disable-content-t rust Ignorar verificação de imagem
29 -\-dns Definir servidores DNS personalizados
30 -\-dns-opt Definir opções de DNS
31 -\-dns-option Definir opções de DNS
32 -\-dns-search Definir domínios de pesquisa de DNS personalizados
33 -\-domainname Nome de domínio NIS de contêiner
34 -\-gpus API 1.40+ <https://docs.d ocker.com/engine/api/ v1.40/>__Dispositivos GPU a serem adicionados ao contêiner ('all' para aprovar todas as GPUs)
35 -\-group-add Adicionar outros grupos para participar
36 -\-health-cmd Comando a ser executado para verificar a integridade
37 -\-health-interval Tempo entre a execução da verificação (msm|h) (padrão 0s)
38 -\-health-retries Falhas consecutivas necessárias para relatar problemas de saúde
39 -\-health-start-peri od API < https://docs.d ocker.com/engine/api/ v1.29/> 1.29+__Período de início para a inicialização do contêiner antes de iniciar a contagem regressiva de tentativas de integridade (msm|h) (padrão 0s)
40 -\-health-timeout Tempo máximo para permitir que uma verificação seja executada (msm|h) (padrão 0s)
41 -\-help Uso de impressão
42 -\-hostname , -h Nome do host do contêiner
43 -\-init API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__Executar um init dentro do contêiner que encaminha sinais e reaplica processos
44 -\-interactive , -i Manter o STDIN aberto mesmo se não estiver conectado
45 -\-io-maxbandwidth Limite máximo de largura de banda de E/S para a unidade do sistema (somente Windows)
46 -\-io-maxiops Limite máximo de IOPs para a unidade do sistema (somente Windows)
47 -\-ip Endereço IPv4 (por exemplo, 172.30.100.104)
48 -\-ip6 Endereço IPv6 (por exemplo, 2001:db8::33)
49 -\-ipc Modo IPC a ser usado
50 -\-isolation Tecnologia de isolamento de contêiner
51 -\-kernel-memory Limite de memória do kernel
52 -\-label , -l Definir metadados em um contêiner
53 -\-label-file Ler em um arquivo de rótulos delimitado por linhas
54 -\-link Adicionar link para outro contêiner
55 -\-link-local-ip Endereços locais de link IPv4/IPv6 de contêiner
56 -\-log-driver Driver de registro para o contêiner
57 -\-log-opt Opções do driver de log
58 -\-mac-address Endereço MAC do contêiner (por exemplo, 92:d0:c 6:0 a: 29:33)
59 -\-memory , -m Limite de memória
60 -\-memory-reservation Limite flexível de memória
61 -\-memory-swap Limite de swap igual à memória mais swap: '-1' para permitir a troca ilimitada
62 -\-memory-swappiness Ajuste a troca de memória do contêiner (0 a 100)
63 -\-name Atribuir um nome ao contêiner
64 -\-net Conectar um contêiner a uma rede
65 -\-net-alias Adicionar um alias com escopo de rede para o contêiner
66 -\-network Conectar um contêiner a uma rede
67 -\-network-alias Adicionar um alias com escopo de rede para o contêiner
68 -\-no-healthcheck Desativar qualquer HEALTHCHECK especificado pelo contêiner
69 -\-oom-kill-disable Desabilitar OOM Killer
70 -\-oom-score-adj Ajustar as preferências de OOM do host (-1.000 a 1.000)
71 -\-pid Namespace PID a ser usado
72 -\-pids-limit Ajustar o limite de preços do contêiner (defina -1 para ilimitado)
73 -\-platform API 1.32+ <https://docs.d ocker.com/engine/api/ v1.32/>__Definir plataforma se o servidor tiver capacidade multiplataforma
74 -\-privileged Conceder privilégios estendidos a esse contêiner
75 -\-publish , -p Publicar a(s) porta(s) de um contêiner no host
76 -\-publish-all , -P Publicar todas as portas expostas em portas aleatórias
77 -\-pull Recuperar a imagem antes de executar (“sempre” "nunca”)
78 -\-read-only Montar o sistema de arquivos raiz do contêiner somente para leitura
79 -\-restart Política de reinicialização a ser aplicada quando um contêiner sair
80 -\-rm Remover automaticamente o contêiner quando ele sair
81 -\-runtime Runtime a ser usado neste contêiner
82 -\-security-opt Opções de segurança
83 -\-shm-size Tamanho de /dev/shm
84 -\-sig-proxy O proxy recebeu sinais para o processo
85 -\-stop-timeout API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__Tempo limite (em segundos) para parar um contêiner
86 -\-storage-opt Opções de driver de armazenamento do contêiner
87 -\-sysctl Opções do Sysctl
88 -\-tmpfs Montar um diretório tmpfs
89 -\-tty , -t Alocar um pseudo-TTY
90 -\-ulimit Opções ilimitadas
91 -\-userns Namespace de usuário a ser usado
92 -\-uts Namespace UTS a ser usado
93 -\-volume , -v Vincular e montar um volume
94 -\-volume-driver Driver de volume opcional para o contêiner
95 -\-volumes-from Montar volumes do(s) contêiner(es) especificado(s)

Se você executar um trabalho de simulação com as configurações de runtime anteriores, sua simulação AWS RoboMaker FALHARÁ com um código de erro 4XX.

A imagem do contêiner:

  • DEVE ser uma reclamação Open Container Initiative (OCI).

  • DEVE ser construído para a arquitetura X86_64. Se for construído para uma arquitetura diferente, AWS RoboMaker FALHARÁ na simulação com um código de erro 4XX.

  • DEVE ser menor que ou igual a 40 GB de tamanho sem compressão. Se a imagem do contêiner for maior que 40 GB descompactada, AWS RoboMaker FALHARÁ na simulação com um código de erro 4XX.

  • DEVE ter um manifesto de imagem V2, compatível com o esquema da versão 2.

  • DEVE usar uma imagem base baseada em Linux. Se você não usar uma imagem base baseada em Linux, AWS RoboMaker FALHARÁ na simulação com um código de erro 4XX.

  • DEVE usar um ambiente de desenvolvimento e um sistema operacional compatíveis entre si. Veja a seguir exemplos de combinações compatíveis de ambientes de desenvolvimento e sistemas operacionais:

    • Sistema operacional robótico (ROS) Melodic – ubuntu:bionic

    • Sistema operacional robótico (ROS) 2 Foxy – ubuntu:focal

    Se você não usa uma combinação compatível de estrutura robótica e sistema operacional, sua simulação pode apresentar um comportamento inesperado.

A seguir estão os requisitos binários para sua imagem de contêiner:

Para oferecer suporte ao streaming de GUI, recomendamos instalar e fornecer os seguintes binários:

  • devilspie

Recomendamos que sua imagem de contêiner use caminhos absolutos para seus executáveis. Também recomendamos que o executável dentro do contêiner seja executado corretamente. Sua simulação FALHARÁ se não conseguir encontrar o caminho para seus executáveis.

A imagem do contêiner:

  • DEVE ter o glvnd instalado se estiver usando o OpenGL em seus aplicativos.

  • DEVE ter NVIDIA CUDA 11.2 ou inferior se estiver usando CUDA em seus aplicativos.

  • DEVE ter a versão 4.6 ou inferior do OpenGL se estiver usando o OpenGL em seus aplicativos.

  • DEVE ter a versão 1.2 ou inferior do Vulkan se estiver usando APIs do Vulkan em seus aplicativos.

  • DEVE ter a versão 1.2 ou inferior do OpenCL se estiver usando o OpenCL em seus aplicativos.

Observação

O AWS RoboMaker suporta Vulkan somente para renderização fora da tela e não é operacional em telas de GUI. Portanto, o StreamUI deve ser configurado como false se estiver usando o Vulkan.

Para obter instruções detalhadas sobre como as imagens de GPU podem ser criadas, consulteCriação de imagens para executar aplicativos de GPU.

Uma imagem de contêiner DEVE fornecer um script de ponto de entrada para o fornecimento. O script do ponto de entrada DEVE ter exec "${@:1}" como última linha para que o AWS RoboMaker possa ser executado o script do ponto de entrada. A execução do script do ponto de entrada permite que você use o comando roslaunch package-name. O comando launch-file para executar os contêineres.

Sua imagem de contêiner não pode usar VOLUME no Dockerfile. Se VOLUME estiver no Dockerfile, sua simulação FALHARÁ com um código de erro 4XX.

A palavra-chave EXPOSE em seu Dockerfile é ignorada pelo AWS RoboMaker. Todas as portas expostas pela palavra-chave EXPOSE não são automaticamente expostas pelo sistema. Se quiser expor portas em sua simulação, você pode usar a configuração de encaminhamento de portas do AWS RoboMaker.

O AWS RoboMaker as seguintes variáveis de ambiente. Se você executar sua simulação no AWS, o AWS RoboMaker substituirá qualquer valor que você especificar para essas variáveis de ambiente:

  • ROBOMAKER*

  • DCV_VIRTUAL_SESSION

  • XDG_SESSION_ID

  • DCV_SESSION_ID

  • XDG_SESSION_TYPE

  • XDG_RUNTIME_DIR

  • SHLVL

  • XAUTHORITY

Você não pode especificar CMD em seu Dockerfile. Se você fizer isso, o AWS RoboMaker sobrescreve com o comando em sua simulação launchConfig.

Se seu contêiner estiver executando ROS e você precisar de comunicação entre seu aplicativo de robô e seu aplicativo de simulação, você deve configurar as seguintes estruturas de robótica:

  • ROS Master

  • Gazebo Master

  • ROS IP

Não é possível personalizar o arquivo /etc/resolv.conf no contêiner. O AWS RoboMaker sobrescreve o arquivo com seu próprio arquivo.

Se você estiver executando seu Dockerfile no AWS, não poderá MONTAR a imagem. Se você especificar Mount no Dockerfile, AWS RoboMaker FALHARÁ em sua simulação com um código de erro 4XX.

Sua imagem de contêiner não pode usar chamadas de sistema bloqueadas pelo perfil seccomp padrão do Docker. Para obter informações sobre chamadas de sistema bloqueadas, consulte Perfis de segurança Seccomp.

Para especificar um usuário que executa uma imagem, você pode especificar uma palavra-chave USER no Dockerfile. Se você não especificar um usuário, o AWS RoboMaker use o usuário raiz no contêiner.

Na imagem do contêiner, você pode especificar o USER como um nome ou um UID:GID. Se a imagem do contêiner não tiver um UID, ela terá um valor padrão de 1000.

Sua imagem de contêiner não pode armazenar dados em /opt/amazon/robomaker ou em nenhuma de suas subpastas. Somente o AWS RoboMaker pode usar esse diretório. Sua simulação pode não se comportar adequadamente se você usar esse diretório.

As configurações do runtime apresentadas a seguir não têm suporte.

Argumento do Docker Run Descrição
1 --add-host Adicionar um mapeamento personalizado de host para IP (host:ip)
2 --attach , -a Anexar a STDIN, STDOUT ou STDERR
3 --blkio-weight Bloquear IO (peso relativo), entre 10 e 1.000, ou 0 para desativar (padrão 0)
4 --blkio-weight-devi ce Peso de E/S do bloco (peso relativo do dispositivo)
5 --cap-add Adicionar recursos do Linux
6 --cap-drop Abandonar recursos do Linux
7 --cgroup-parent Cgroup pai opcional para o contêiner
8 --cgroupns API 1.41+ <https://docs.d ocker.com/engine/api/ v1.41/>__Namespace do Cgroup a ser usado (host|private) 'host': Executa o contêiner no namespace do cgroup do host do Docker 'private': Executa o contêiner em seu próprio namespace de cgroup privado '': Usar o espaço de nomes do cgroup conforme configurado pela opção default-cgroupns-mode no daemon (padrão)
9 --cidfile Gravar o ID do contêiner no arquivo
10 --cpu-count Contagem de CPU (somente Windows)
11 --cpu-percent Porcentagem de CPU (somente Windows)
12 --cpu-period Limitar o período CFS (Completely Fair Scheduler) da CPU
13 --cpu-quota Limitar a cota de CPU CFS (Completely Fair Scheduler)
14 --cpu-rt-period API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__Limitar o período em tempo real da CPU em microssegundos
15 --cpu-rt-runtime API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__Limitar o runtime em tempo real da CPU em microssegundos
16 --cpu-shares , -c Compartilhamentos de CPU (peso relativo)
17 --cpus API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__Number de CPUs
18 --cpuset-cpus CPUs nas quais permitir a execução (0-3, 0,1)
19 --cpuset-mems MEMs nos quais permitir a execução (0-3, 0,1)
20 --detach , -d Executar o contêiner em segundo plano e imprima o ID do contêiner
21 --detach-keys Substituir a sequência de teclas para separar um contêiner
22 --device Adicionar um dispositivo host ao contêiner
23 --device-cgroup-rul e Adicionar uma regra à lista de dispositivos permitidos do cgroup
24 --device-read-bps Limitar a taxa de leitura (bytes por segundo) de um dispositivo
25 --device-read-iops Limitar a taxa de leitura (IO por segundo) de um dispositivo
26 --device-write-bps Limitar a taxa de gravação (bytes por segundo) em um dispositivo
27 --device-write-iops Limitar a taxa de gravação (IO por segundo) para um dispositivo
28 --disable-content-t rust Ignorar verificação de imagem
29 --dns Definir servidores DNS personalizados
30 --dns-opt Definir opções de DNS
31 --dns-option Definir opções de DNS
32 --dns-search Definir domínios de pesquisa de DNS personalizados
33 --domainname Nome de domínio NIS de contêiner
34 --gpus API 1.40+ <https://docs.d ocker.com/engine/api/ v1.40/>__Dispositivos GPU a serem adicionados ao contêiner ('all' para aprovar todas as GPUs)
35 --group-add Adicionar outros grupos para participar
36 --health-cmd Executar para verificar a integridade
37 --health-interval Tempo entre a execução da verificação (msm|h) (padrão 0s)
38 --health-retries Falhas consecutivas necessárias para relatar problemas de saúde
39 --health-start-peri od API < https://docs.d ocker.com/engine/api/ v1.29/> 1.29+__Período de início para a inicialização do contêiner antes de iniciar a contagem regressiva de tentativas de integridade (msm|h) (padrão 0s)
40 --health-timeout Tempo máximo para permitir que uma verificação seja executada (msm|h) (padrão 0s)
41 --help Uso de impressão
42 --hostname , -h Nome do host do contêiner
43 --init API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__Executar um init dentro do contêiner que encaminha sinais e reaplica processos
44 --interactive , -i Manter o STDIN aberto mesmo se não estiver conectado
45 --io-maxbandwidth Limite máximo de largura de banda de E/S para a unidade do sistema (somente Windows)
46 --io-maxiops Limite máximo de IOPs para a unidade do sistema (somente Windows)
47 --ip Endereço IPv4 (por exemplo, 172.30.100.104)
48 --ip6 Endereço IPv6 (por exemplo, 2001:db8::33)
49 --ipc Modo IPC a ser usado
50 --isolation Tecnologia de isolamento de contêiner
51 --kernel-memory Limite de memória do kernel
52 --label , -l Definir metadados em um contêiner
53 --label-file Ler em um arquivo de rótulos delimitado por linhas
54 --link Adicionar link para outro contêiner
55 --link-local-ip Endereços locais de link IPv4/IPv6 de contêiner
56 --log-driver Driver de registro para o contêiner
57 --log-opt Opções do driver de log
58 --mac-address Endereço MAC do contêiner (por exemplo, 92:d0:c 6:0 a: 29:33)
59 --memory , -m Limite de memória
60 --memory-reservation Limite flexível de memória
61 --memory-swap Limite de swap igual à memória mais swap: '-1' para permitir a troca ilimitada
62 --memory-swappiness Ajuste a troca de memória do contêiner (0 a 100)
63 --name Atribuir um nome ao contêiner
64 --net Conectar um contêiner a uma rede
65 --net-alias Adicionar um alias com escopo de rede para o contêiner
66 --network Conectar um contêiner a uma rede
67 --network-alias Adicionar um alias com escopo de rede para o contêiner
68 --no-healthcheck Desativar qualquer HEALTHCHECK especificado pelo contêiner
69 --oom-kill-disable Desabilitar OOM Killer
70 --oom-score-adj Ajustar as preferências de OOM do host (-1.000 a 1.000)
71 --pid Namespace PID a ser usado
72 --pids-limit Ajustar o limite de preços do contêiner (defina -1 para ilimitado)
73 --platform API 1.32+ <https://docs.d ocker.com/engine/api/ v1.32/>__Definir plataforma se o servidor tiver capacidade multiplataforma
74 --privileged Conceder privilégios estendidos a esse contêiner
75 --publish , -p Publicar a(s) porta(s) de um contêiner no host
76 --publish-all , -P Publicar todas as portas expostas em portas aleatórias
77 --pull Recuperar a imagem antes de executar (“sempre” "nunca”)
78 --read-only Montar o sistema de arquivos raiz do contêiner somente para leitura
79 --restart Política de reinicialização a ser aplicada quando um contêiner sair
80 --rm Remover automaticamente o contêiner quando ele sair
81 --runtime Runtime a ser usado neste contêiner
82 --security-opt Opções de segurança
83 --shm-size Tamanho de /dev/shm
84 --sig-proxy O proxy recebeu sinais para o processo
85 --stop-timeout API 1.25+ <https://docs.d ocker.com/engine/api/ v1.25/>__Tempo limite (em segundos) para parar um contêiner
86 --storage-opt Opções de driver de armazenamento do contêiner
87 --sysctl Opções do Sysctl
88 --tmpfs Montar um diretório tmpfs
89 --tty , -t Alocar um pseudo-TTY
90 --ulimit Opções ilimitadas
91 --userns Namespace de usuário a ser usado
92 --uts Namespace UTS a ser usado
93 --volume , -v Vincular e montar um volume
94 --volume-driver Driver de volume opcional para o contêiner
95 --volumes-from Montar volumes do(s) contêiner(es) especificado(s)

Se você executar um trabalho de simulação com as configurações de runtime anteriores, sua simulação AWS RoboMaker FALHARÁ com um código de erro 4XX.