BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Artigos Perguntas e respostas sobre o Docker no Windows

Perguntas e respostas sobre o Docker no Windows

Pontos Principais

  • O Windows é um cidadão de primeira classe para containers Docker: pode se executar aplicações baseados inteiramente no .NET Framework e no novo .NET Core nos containers Windows - no mesmo servidor
  • É fácil começar com Docker. Pode se iniciar do zero e ter suas aplicações executadas nos containers Windows em um dia - caso aprenda com o livro certo :)
  • O Docker é a plataforma número 1 mais procurada pelos desenvolvedores - de acordo com a pesquisa StackOverflow's 2019. Mas ele não é apenas para desenvolvedores - Docker simplifica a entrega, aumenta a eficiência e também reduz custos para as operações
  • Você pode executar aplicações legadas nos containers sem alterações, construir novas aplicações nos containers, e usar o docker para modernizar a arquitetura das atuais aplicações existentes, tudo com o mesmo conjunto de ferramentas
  • Containers Windows agora estão prontos para produção. O Docker Swarm tem suporte a instâncias Windows desde 2014, e agora Kubernetes também suporta Windows, então você tem uma escolha entre plataformas de containers

O livro Docker no Windows - Segunda Edição por Elton Stoneman ensina aos leitores como executar novas e velhas aplicações nos containers Docker no Windows - modernizando a arquitetura, melhorando a segurança e maximizando a eficiência.

InfoQ entrevistou Stoneman sobre as mudanças significativas na 2º edição de Docker no Windows, casos de uso típicos, benefícios dos pipelines de CI/CD, conteinerização, orientação, operações, e colaboração entre Microsoft e Docker.

InfoQ: Porque você escreveu um livro sobre a atualização do Windows no Docker? O que mudou entre a primeira (2017) e a segunda versão (2019) de seu livro?

Elton Stoneman: Containers Windows foram um novo recurso no Windows Server 2016. Os times do Docker e da Microsoft fizeram um ótimo trabalho trazendo a filosofia e a experiência de usuário dos containers Linux para o Windows, mas havia algumas lacunas técnicas - coisas que funcionavam diferentemente no Windows. Windows Server 2019 fecha estas lacunas, então você pode fazer quase tudo nos containers Windows das quais você pode fazer nos containers Linux. Mas eu não queria fazer uma pequena atualização, então para a segunda edição, reescrevi todos os exemplos para usar a última versão do Docker, com Windows Server 2019 e Windows 10.

InfoQ: Quais são os casos de usos típicos usando Windows no Docker? Há mais casos de usos possíveis que a dois anos atrás?

Stoneman: Acho que sim. Os casos de uso originais são para aplicações legadas e aplicações existentes ainda em desenvolvimento. Pode se mover aplicações velhas para containers Windows sem alterações no código, o que é um ótimo caminho para sair de versões velhas do Windows e ir para plataformas modernas. Pense sobre uma aplicação .NET Framework 2.0 a qual esta sendo executada no Windows Server 2008 - esta ficará sem suporte em breve. Pode se atualizar esta aplicação para .NET 4.7 no Windows 2019 em um container apenas com um Dockerfile, sem alterações na aplicação.

O próximo são as aplicações que ainda estão desenvolvimento. Essas são aplicações monolíticas as quais ainda estão sendo construídas. É difícil adicionar novas funcionalidades em grandes monolitos sem riscos, por conta disso que tem se habitualmente uma considerável fase de testes de regressão mesmo para uma alteração pequena. Com Docker, você pode executar o monolito original em um container e inserir as funcionalidades em outro novo container, separar containers, os quais têm seus ciclos de teste e lançamento. Isso lhe traz muitos benefícios de uma arquitetura de microservices sem gastar dois anos reescrevendo sua aplicação. Estes são padrões estabelecidos para quem que está usando proxy reverso e filas de mensagens as quais eu cubro com detalhes no livro.

E o novo case de uso para novas aplicações. Microsoft tem trabalhado duro para diminuir o tamanho das imagens Docker para Windows, particularmente com o Nano Server. Agora é possível construir aplicações dentro de imagens Docker para Windows que são menores e mais leves. Isso significa que são mais rápidas para compartilhar, e tem uma área menor para potenciais ataques. Isso faz o Windows uma excelente escolha para times que querem construir arquiteturas nativas para a cloud, mas não estão confortáveis com Linux.

InfoQ: Como se beneficiar dos pipelines CI / CD em relação ao Windows no Docker?

Stoneman: Os pipelines se tornam ridiculamente simples com o Docker. Você escreve um Dockerfile para empacotar seu aplicativo e pode ter vários estágios. Um padrão típico é compilar o aplicativo em um estágio e empacotar os binários compilados no próximo estágio. Todas essas etapas ocorrem em containers, portanto, seu estágio de compilação é executado em um container que possui o SDK instalado. O estágio final tem o tempo de execução do aplicativo sem as ferramentas extras do SDK

O que isso significa é que o Docker é a única dependência para criar e executar aplicativos, portanto, você não precisa perder tempo desenvolvendo servidores de construção e mantendo o conjunto de ferramentas em sincronia com a equipe de desenvolvimento. Seu pipeline de construção é literalmente `git clone`, depois` docker build`. Isso vale para aplicações completas em .NET Framework e .NET Core - você não precisa ter nenhuma versão do .NET instalada para criar e executar aplicativos .NET com o Docker.

Em última análise, isso significa que você pode usar qualquer servidor de compilação (ou serviço gerenciado) com suporte ao Docker - e praticamente todos eles o fazem. Seja o Jenkins ou o DevOps do Azure, os scripts de construção do seu pipeline são apenas comandos simples do Docker.

InfoQ: Você dedicou um capítulo inteiro a conteinerização e orientação para implementar o docker. Você pode resumir aqui, por favor?

Stoneman: De jeito nenhum - você deve ir e comprar o livro. Brincadeira :) O Docker é fácil de entender - você pode obter um Dockerfile funcional para executar o aplicativo em um container do Windows em apenas alguns dias, mesmo partindo do zero. Mas o caminho para a produção será mais difícil porque você está fundamentalmente mudando a maneira como seus aplicativos são executados. Você precisará ter muitas partes diferentes de sua organização focadas nisso, e todas elas terão uma visão diferente do que os containers significam. Portanto, a orientação é basicamente: fazer uma pequena prova de conceito com um aplicativo que você conhece bem; faça funcionar e depois demonstre para as pessoas que vão colocá-la em produção. Há conselhos no livro para montar um caso de valor que funcione para os times de gestão, operações e segurança.

InfoQ: O livro faz uso do estudos de casos do mundo real para implementações do Docker. Você quer fornecer algumas práticas recomendadas?

Stoneman: No livro, eu cubro alguns dos diferentes projetos em que trabalhei, onde o Docker fez uma enorme diferença na programação da entrega, a passagem para operações e no suporte contínuo do aplicativo. Para todos esses cenários diferentes, as melhores práticas são as mesmas: otimizar seus Dockerfiles e adicionar verificações de integridade, registros de logs e métricas. Isso ajudará a implantar aplicativos de autocorreção, em que a plataforma de container mantém seu aplicativo em execução, mesmo se houver falhas no container ou no servidor. E não é difícil de se fazer - eu tenho vários cursos na Pluralsight que vão ajudar. Tente Modernizar os Aplicativos .NET com o Docker e Monitorar a Integridade de Aplicativos em Container com o Docker.

InfoQ: E sobre a parte da operação para docker; você pode nos dizer quais são as tendências que você vê hoje em dia?

Stoneman: O legal é que a parte operacional é a mesma para todos os seus aplicativos e todos os seus ambientes. Você pode ter um cluster de máquinas executando o Docker, que é uma mistura de servidores Linux e Windows. No cluster, você pode executar novos aplicativos de microservices em containers Linux, aplicativos legados em containers do Windows e aplicativos ainda em desenvolvimento usando uma combinação de contêineres Windows e Linux. Você implanta, gerencia, atualiza e monitora todos esses aplicativos, da mesma forma, usando as mesmas ferramentas.

O que é interessante agora é que o Windows é suportado em ambos dos principais containers de orquestração - Docker Swarm e Kubernetes. O Swarm suporta o Windows desde 2016, por isso é muito sólido, e é uma ótima escolha se você está começando porque ele é integrado ao Docker e é super simples de usar. Os provedores de cloud se concentraram no Kubernetes, em parte porque é mais fácil integrá-lo como um serviço gerenciado. O Windows recentemente passou o Kubernetes para disponibilidade geral, então veremos todas as clouds suportando instâncias do Windows em breve. O Kubernetes apenas executa contêineres do Docker, portanto, você pode migrar facilmente do Swarm para o Kubernetes, se desejar.

InfoQ: Para finalizar, o quão conectado você tem visto o Docker e a Microsoft?

Stoneman: Tenho conhecimento interno aqui porque trabalho no Docker e sou MVP da Microsoft :) Em nível técnico, a equipe do Docker e do Windows Server trabalham de perto desde 2014, colocando os containers do Windows em paridade com os containers Linux. Em nível comercial, não posso falar muito, mas há uma enorme oportunidade de ajudar as organizações a entregarem softwares melhores mais rapidamente, e a Microsoft e o Docker estão trabalhando juntos para que isso aconteça. No nível do cliente, é uma ótima história, pois o licenciamento do Windows Server 2016 e 2019 inclui o Docker Enterprise, então você obtém suporte de produção para os seus containers Windows de ambas, Microsoft e do Docker.

Sobre o Autor do Livro

Elton Stoneman tem sido Microsoft MVP desde 2010 e um autor Pluralsight desde 2013. Antes de se juntar a Docker ele atuou 15 anos como consultor, arquitetando e entregando grandes soluções de sucesso construídas em .NET sobre Windows, Docker, e Azure. Ele está gostando de trabalhar com a nova evolução da pilha Microsoft, ajudando pessoas a entender ótimas oportunidades para modernizar aplicativos existentes baseados em .NET Framework com Docker e rodar estes com aplicações com o novo .NET Core nos containers Windows e Linux.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT