Ter um ambiente Docker na própria máquina pode ser meio complicado em algumas situações, um exemplo disso é o caso de quem utiliza o Windows 10 Home, que não suporta a instalação típica do Docker por causa de um recurso (Hyper-V) que só é liberado na versão Pro do sistema. Claro, existem contornos e alternativas que podem ser feitas para resolver isso, mas geralmente a custo de recursos importantes para quem usa máquinas mais modestas, além também do trabalho extra que é necessário para ter tudo funcionando. E a coisa complica mais ainda ao tentar simular o cenário de vários nós (maquinas) trabalhando em conjunto…

A solução

Pois bem, existe uma alternativa bem simples, e que não custa nada, e que você pode usar direto no seu navegador! É o Play With Docker! Uma ferramenta maravilhosa patrocinada pela própria Docker Inc.

O PWD funciona assim:

Você faz login. Você clica em ‘Start’. Você é direcionado para o ‘Playground’ e pronto, pode começar a criar instâncias (máquinas) e fazer o que bem entender com elas.

Algumas características do PWD

Tem tudo pronto pra você usar o Docker e Swarm.

É possível criar várias instâncias e simular o cenário de trabalhar com vários nós.

As instâncias rodam uma distribuição Linux chamada Alpine, que é bastante conhecida no mundo dos containers por ser bem leve e segura, mas é um pouquinho diferente das populares como Ubuntu, Debian e Mint… Mas não é nada complicado ou do outro mundo de se usar.

A sessões duram 4 horas, ou seja, ao criar seu playground você tem 4 horas com ele ativo, e após isso as instâncias serão encerradas (mas você pode iniciar outra sessão e continuar brincando e estudando sem problemas).

Conceito básico (e extremamente simplificado) do Docker

O Docker funciona basicamente assim: você cria imagens de suas aplicações e com essas imagens você pode criar containers sem se preocupar com o ambiente no qual eles vão estar rodando, pois os containers funcionam de forma isolada e sem interferencia da máquina onde eles estão rodando, e dentro das imagens vai estar descrito tudo o que os containers vão precisar para as suas aplicações funcionarem (versões de softwares, linguagens, pacotes, etc).

Obs.: Isso não explica nem de perto todas as capacidades e vantagens do Docker, então recomendo dar uma olhada em outros artigos e até na documentação do Docker para ter uma noção melhor do que ele pode oferecer.

Iniciando um container usando uma imagem pronta

Uma imagem é uma aplicação que foi ‘conteinerizada’ e está pronta para virar um novo container (ou vários). Nesse exemplo vou usar uma imagem do Quick Express, que é um boilerplate para APIs REST em Node.js. Essa imagem está hospedada no Docker Hub, que é um repositório mantido pela própria Docker Inc. e que é gratuito para hospedar imagens públicas.

Iniciando o container

Pra rodar um container usando essa imagem só precisamos de um único comando:

docker run -d -p 80:3000 -e "AUTH_SECRET=mySecretKey" --name quick-express josecfreittas/quick-express

Entendendo o comando:

docker run ← comando que diz que quero rodar um container -d ← opção ‘detached’, que diz que não quero entrar no console do meu container quando ele iniciar -p 80:3000 ← opção ‘port’, que diz que quero que o Docker direcione e exponha para a porta 80 da minha instância o que está rodando na porta 3000 do meu container. -e “AUTH_SECRET=mySecretKey” ← opção ‘env’, que define variáveis de ambiente dentro do container (o Quick Express precisa da variável AUTH_SECRET para poder funcionar corretamente) --name quick-express ← opção para definir o nome do container (que pode ser qualquer um) josecfreittas/quick-express ← a imagem que vai ser usada para o container. Como já tinha sido dito, a imagem que vai ser usada para o container. Como já tinha sido dito, essa imagem foi hospedada no Docker Hub , e o Docker automaticamente busca e faz o download de imagens através do Docker Hub.

Verificando se o container está ativo

Você pode conferir a lista dos containers que estão sendo executados usando esse comando:

docker ps

Ao executar esse comando, o esperado é que seja listado o container que iniciamos no passo anterior.

Acessando a api

Como foi definida uma porta para expor o nosso container (80), já é possível acessar ele através da url fornecida pelo PWD:

Local da interface do PWD onde você pode encontrar o link para acessar a porta exposta que te leva à api.

E esse é o resultado:

Resposta em json do Quick Express, informando status da api.

Com apenas 1 comando!