Azure, Docker e conteinerização de aplicações ASP.NET 5 em máquinas Linux

DockerEste artigo tem a intenção de apresentar o Docker e seus conceitos básicos para desenvolvedores e ITPros que ainda não o conhecem.

O Docker é um mecanismo Open Source que permite automatizar a distribuição de aplicativos em forma de containers autossuficientes que podem rodar praticamente em qualquer plataforma, e agora também é suportado no Azure.

Docker Container

É importante ressaltar a diferença entre um Container e uma Máquina Virtual. Uma VM é uma instalação completa de um Sistema Operacional, desde seu boot, até o servidor de aplicação e os pacotes da aplicação. Já um Container possui apenas a aplicação e algumas bibliotecas especificas desta aplicação, que não estão na imagem base sobre a qual o Container rodará.

Containers_vs_VMs_largeA principal vantagem do Docker é que, de forma diferente de ferramentas de configuração como o Chef e o Puppet, o desenvolvedor gera uma imagem da aplicação e compartilha esta mesma imagem para os servidores de produção, desenvolvimento e testes, sem que precise especificar os requisitos do S.O. As principais caracteristicas de um container docker são:

  • Portabilidade da aplicação
  • Isolamento de processos
  • Permitir gerenciamento individual de cada container

Como um Container Docker é muito menor que uma VM, pois basicamente ele é um diretório com arquivos da aplicação, fazer a distribuição de um destes Containers para os servidores é muito mais rápido que subir uma VM, ou mesmo executar uma receita do Chef ou Puppet. Isso é possível pois enquanto uma VM pode chegar a ter gigabytes de tamanho, um container normalmente tem poucos megabytes.

Infelizmente, por enquanto, só temos Containers Docker baseados em Linux. Por isto a importância de termos o ASPNET 5 Open Source disponível para plataformas Linux e Mac OS X.

Docker Images

Cada container do Docker é derivado de uma imagem que é a base para as aplicações que rodarão nestes containers. Estas imagens têm versões enxutas de uma distribuição Linux somente com os arquivos que são comuns a qualquer distribuição daquela versão do S.O., como Ubuntu por exemplo.

O Container ASP.NET 5

Em 14 de Novembro, o time do ASP.NET da Microsoft liberou uma imagem official do ASP.NET 5 no Docker Hub e no GitHub. Este container é uma das primeiras aparições públicas do ASP.NET open source rodando com Mono.

Criando sua máquina Docker no Azure

Para criar uma máquina pré configurada com Docker no Azure, clique em New, Virtual Machines no portal:

Portal

Rodando um container de aplicação ASP.NET

Uma vez que sua máquina esteja no ar, precisamos baixar a imagem com o container da aplicação exemplo do ASP.NET 5.

Para isto vamos utilizar o comando Pull do Docker:

pull     Pull an image or a repository from the docker registry server

Na linha de comando executamos:

daibert@DaibertDocker:~$ sudo docker pull microsoft/aspnet

Veremos:

Pulling repository microsoft/aspnet

d00c2591447a: Download complete

511136ea3c5a: Download complete

13b11a18f5b4: Download complete

Status: Downloaded newer image for microsoft/aspnet:latest

Então podemos verificar que a imagem foi baixada com sucesso:

daibert@DaibertDocker:~$ docker images

REPOSITORY     TAG     IMAGE ID       CREATED     VIRTUAL SIZE

microsoft/aspnet latest d00c2591447a 3 days ago   493.5 MB

Agora vamos iniciar o container:

daibert@DaibertDocker:~$ sudo docker run -t -d -p 80:5004 microsoft/aspnet

Pronto, podemos ver que nosso container está rodando pelo comando:

daibert@DaibertDocker:~$ docker ps
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS                  NAMES
064e5ea2f6ab        microsoft/aspnet:latest   “/bin/bash”         11 seconds ago      Up 11 seconds       0.0.0.0:80->5004/tcp   thirsty_engelbart

Agora basta acessar nossa VM pelo navegador utilizando o endereço http://[minha-VM-docker].cloudapp.net

ASPNET_Deployed
Podemos perceber que a parceria da Microsoft Open Tech com o time do Docker tornou a utilização de containers do Docker no Azure bem simples.

Fiquem de olho aqui no Lab 27, pois em breve teremos mais artigos falando sobre Docker.

Abs,
@daibert


Autor: Microsoft Tech