Estou executando o Ubuntu 20.04 e usando o aplicativo Nvidia Riva Automatic Speech Recognition para detectar comandos de fala. Gostaria de direcioná-los/canalizá-los para outro aplicativo para executar uma ação de controle. O problema que tenho é que o aplicativo ASR é implantado em um contêiner docker e o aplicativo de controle não.
Portanto. Gostaria de saber como um aplicativo executado fora do contêiner do docker pode interagir com um aplicativo executado dentro dele.
Pensei em executar tudo dentro do mesmo contêiner, porém isso não é prático porque nosso produto é maduro, possui muitos serviços interagindo entre si e também interfaces para drivers de kernel Linux.
Agradecemos antecipadamente por qualquer ajuda.
Existem duas interfaces muito óbvias entre um Docker Container e o host que você provavelmente deveria explorar mais detalhadamente:
Portas publicadas
Uma opção ao executar um contêiner é mapear as portas do contêiner para o host. Isto pode ser usado para interfaces web, etc., mas também para trocar outros dados via mapeamento de portas TCP ou UDP.
Para mapear uma porta entre o contêiner e o host, use a
-p
opção com esta sintaxe a seguir :Exemplo: você deseja mapear a porta TCP
80
no contêiner para8080
a porta no host (/tcp
é opcional, pois é o padrão).Vincular montagens
Outra opção é usar montagens de ligação para mapear arquivos entre o sistema de arquivos host e o contêiner. Esses arquivos são mapeados em tempo real, portanto, quaisquer atualizações que ocorram no contêiner devem ser refletidas imediatamente no sistema de arquivos.
Para mapear arquivos entre contêiner e host, use a
-v
opção com esta sintaxe a seguir :Exemplo: você deseja mapear o caminho
/data
no contêiner para o caminhohome/user/data
no host.Observe que mapeamentos adicionais também podem ser feitos para arquivos únicos: