Contêineres do Windows

O que são Contêineres

Os contêineres são uma maneira de encapsular um aplicativo dentro de sua própria caixa isolada. O aplicativo em seu contêiner não tem conhecimento dos outros aplicativos ou processos que existem fora da sua caixa. Tudo o que é necessário para o aplicativo ser executado com êxito também reside nesse contêiner. Aonde a caixa for, o aplicativo sempre estará satisfeito, porque estará acompanhado de tudo o que é necessário para ser executado.

Imagine uma cozinha. Empacotamos todos os utensílios e móveis, as panelas, o detergente para louças e as toalhas de mão. Esse é o nosso contêiner.

Agora podemos levar esse contêiner para qualquer apartamento que quisermos e ele continuará sendo a mesma cozinha. Basta conectar eletricidade e água a ele e já poderemos começar a cozinhar (porque temos todos os utensílios de que precisamos!)

Os contêineres são como essa cozinha. Pode haver diferentes tipos de cômodos, bem como muitos cômodos de um mesmo tipo. O que importa é que os contêineres vêm empacotados com tudo de que precisam.

Assista a uma breve visão geral: Windows-based containers: Modern app development with enterprise-grade control (Contêineres baseados em Windows: desenvolvimento de aplicativos modernos com controle de nível empresarial).

Conceitos básicos de Contêineres

Os contêineres são ambientes de tempo de execução portáteis, isolados e controlados por recursos, que são executados em um computador host ou máquina virtual. Um aplicativo ou processo executado em um contêiner é empacotado com todas as dependências e os arquivos de configuração necessários. Ele tem a ilusão de que não existem outros processos em execução fora de seu contêiner.

O host do contêiner provisiona um conjunto de recursos para o contêiner e este usará apenas esses recursos. Para o contêiner, não há nenhum outro recurso além daqueles que foram recebidos e, portanto, ele não é capaz de acessar recursos provisionados para um contêiner vizinho.

Os conceitos principais a seguir poderão ser úteis quando você começar a criar e trabalhar com Contêineres do Windows.

Container Host: Physical or Virtual computer system configured with the Windows Container feature. O host do contêiner executará um ou mais Contêineres do Windows.

Imagem de contêiner: conforme as modificações são feitas em um sistema de arquivos ou registro de contêineres, assim como na instalação de software, elas são capturadas em uma área restrita. Em muitos casos, pode ser recomendável capturar esse estado para que os novos contêineres criados herdem essas alterações. That’s what an image is – once the container has stopped you can either discard that sandbox or you can convert it into a new container image. For example, let’s imagine that you have deployed a container from the Windows Server Core OS image. You then install MySQL into this container. Creating a new image from this container would act as a deployable version of the container. This image would only contain the changes made (MySQL), however would work as a layer on top of the Container OS Image.

Sandbox: Once a container has been started, all write actions such as file system modifications, registry modifications or software installations are captured in this ‘sandbox’ layer.

Container OS Image: Containers are deployed from images. The container OS image is the first layer in potentially many image layers that make up a container. Essa imagem fornece o ambiente do sistema operacional. Uma imagem de sistema operacional do contêiner é imutável. Ou seja, ela não pode ser modificada.

Repositório de contêiner: sempre que uma imagem de contêiner for criada, esta imagem e suas dependências serão armazenadas em um repositório local. Essas imagens podem ser reutilizadas várias vezes no host do contêiner. As imagens de contêiner também podem ser armazenadas em um registro público ou privado como o DockerHub para que elas possam ser usadas em vários hosts de contêiner diferentes.

Para alguém familiarizado com máquinas virtuais, contêineres podem parecer muito similares. A container runs an operating system, has a file system and can be accessed over a network just as if it was a physical or virtual computer system. No entanto, a tecnologia e os conceitos por trás dos contêineres são muito diferentes das máquinas virtuais.

Mark Russinovich, especialista em Microsoft Azure, tem uma postagem de blog excelente que detalha as diferenças.

Tipos de Contêiner do Windows

Windows Containers include two different container types, or runtimes.

Windows Server Containers – provide application isolation through process and namespace isolation technology. A Windows Server Container shares a kernel with the container host and all containers running on the host. Esses contêineres não fornecem um limite de segurança hostil e não devem ser usados para isolar código não confiável. Devido ao espaço de kernel compartilhado, esses contêineres exigem a mesma versão e configuração de kernel.

Isolamento do Hyper-V: expande o isolamento fornecido pelos contêineres do Windows Server executando cada contêiner em uma máquina virtual altamente otimizada. In this configuration, the kernel of the container host is not shared with other containers on the same host. Esses contêineres são projetados para hospedagem multilocatário hostil com as mesmas garantias de segurança de uma máquina virtual. Como esses contêineres não compartilham o kernel com o host ou outros contêineres no host, eles podem executar kernels com diferentes versões e configurações (em versões compatíveis). Por exemplo, todos os contêineres do Windows no Windows 10 usam o isolamento do Hyper-V para utilizar a versão e a configuração de kernel do Windows Server.

Executar um contêiner no Windows, com ou sem o isolamento do Hyper-V é uma decisão de tempo de execução. Inicialmente, você pode optar por criar o contêiner com isolamento do Hyper-V e, posteriormente, no tempo de execução, escolher executá-lo como um contêiner do Windows Server.

O que é o Docker?

Ao ler sobre contêineres, você inevitavelmente encontrará menções ao Docker. O Docker é o recipiente pelo qual imagens de contêiner são empacotadas e entregues. Esse processo automatizado produz imagens (efetivamente modelos) que podem ser executadas em qualquer lugar, no local, na nuvem ou em um computador pessoal, como um contêiner.

Assim como qualquer outro contêiner, um Contêiner do Windows Server pode ser gerenciado com o Docker.

Contêineres para Desenvolvedores

From a developer’s desktop to a testing machine to a set of production machines, a Docker image can be created that will deploy identically across any environment in seconds. This story has created a massive and growing ecosystem of applications packaged in Docker containers, with DockerHub, the public containerized-application registry that Docker maintains, currently publishing more than 180,000 applications in the public community repository.

When you containerize an app, only the app and the components needed to run the app are combined into an "image". Containers are then created from this image as you need them. You can also use an image as a baseline to create another image, making image creation even faster. Multiple containers can share the same image, which means containers start very quickly and use fewer resources. For example, you can use containers to spin up light-weight and portable app components – or ‘micro-services’ – for distributed apps and quickly scale each service separately.

Because the container has everything it needs to run your application, they are very portable and can run on any machine that is running Windows Server 2016. You can create and test containers locally, then deploy that same container image to your company's private cloud, public cloud or service provider. The natural agility of Containers supports modern app development patterns in large scale, virtualized and cloud environments.

With containers, developers can build an app in any language. These apps are completely portable and can run anywhere - laptop, desktop, server, private cloud, public cloud or service provider - without any code changes.

Containers helps developers build and ship higher-quality applications, faster.

Containers for IT Professionals

IT Professionals can use containers to provide standardized environments for their development, QA, and production teams. They no longer have to worry about complex installation and configuration steps. By using containers, systems administrators abstract away differences in OS installations and underlying infrastructure.

Containers help admins create an infrastructure that is simpler to update and maintain.

Video Overview

Experimente os Contêineres do Windows Server

Pronto para começar a aproveitar o incrível poder dos contêineres? Confira os links abaixo para praticar a implantação do seu primeiro contêiner:
Se você for usuário do Windows Server, acesse - Introdução Rápida ao Windows Server
Se for usuário do Windows 10, acesse - Introdução Rápida ao Windows 10