Estou estudando o uso do Docker em um projeto de grande escala que é realmente implantado em produção. Nunca usei o docker antes, mas pelo que li, ele consiste em um novo layout chamado "Container Engine" que dá a oportunidade de implantar vários aplicativos independentes entre si e usar os recursos do host.
No caso em que estou trabalhando, as máquinas onde nosso aplicativo está implantado podem ter sistemas operacionais e arquiteturas diferentes; Windows, Linux, arm, Debian, etc... mas eles não possuem nenhuma VM funcionando, apenas o SO e as aplicações que implantamos.
Essas máquinas podem ter de 4 a 5 aplicações rodando no mesmo sistema, tendo cada uma delas dependências diferentes. Já tivemos alguns problemas com isso: por exemplo, com os descritores de arquivo, onde um aplicativo estava pegando a gravação de log de outro aplicativo, gerando logs errados e travando.
Estas aplicações comunicam-se com outras partes das máquinas através de sockets TCP/IP e utilizam gRPC, QPID e SFTP para comunicar com outros elementos do ambiente (servidores externos, bibliotecas próprias, etc...). Não sei se o uso desses protocolos complicaria a implementação do docker em nosso sistema.
Conversando com meus colegas de trabalho, eles me disseram que não vale a pena porque não traria nenhuma otimização ou benefício, mas acho que não.
Tenho lido que, ao usar contêineres, obtemos independência de sistema operacional, fazendo o aplicativo funcionar em sistemas operacionais diferentes usando uma imagem docker, independência de biblioteca e, portanto, isolamento entre aplicativos.
Sim, o docker é usado principalmente para isolar aplicativos com suas dependências de outros aplicativos. Os serviços em rede são o principal caso de uso.
Então, o que você está descrevendo é exatamente para que o docker é usado em todos os lugares.
Seus colegas de trabalho parecem um pouco estranhos; Nunca conheci um administrador experiente que dissesse "ah, executando serviços diferentes na mesma máquina que tenham dependências conflitantes, realmente não acho que isso precise de ferramentas confiáveis". Pelo contrário. E toda equipe sensata de desenvolvimento de software possui um servidor de CI, que executa seus testes em um ambiente perfeitamente reproduzível e descartável após o uso, para o qual hoje todo mundo usa contêineres. Então, talvez ouça menos seus colegas de trabalho e simplesmente faça.