Aprendendo e brincando com Docker pelo navegador
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 incrível 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 interferência 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 para rodar um container-d
← opção 'detached', que diz para não entrar no console do container quando ele iniciar-p 80:3000
← opção 'port', que diz para o Docker expor 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á havia 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:

E esse é o resultado:

Com apenas 1 comando!