Controlando Docker Remotamente.

Controlando Docker Remotamente.

Overview

Olá, entusiastas do Docker! Se mergulharam conosco nos conceitos e comandos básicos do Docker, está na hora de elevarmos o nível. Neste post, vamos explorar o fascinante mundo do controle remoto do Docker, utilizando a ferramenta Play-With-Docker. Prepare-se para criar, controlar e brincar com múltiplos nodes como se estivessem no seu próprio playground digital. De configurações iniciais a considerações de segurança, garantimos uma aventura informativa e empolgante. Vamos nessa?

Nos últimos posts da série Docker, falei sobre os conceitos e comandos básicos desta ferramente. Todavia, sempre acessamos Docker localmente. Agora vou falar um pouco sobre como trabalhar com docker de forma remota.

Para facilitar a vida de todo mundo, vou trabalhar este post utilizando a ferramenta Play-With-Docker (que comentei com vocês no primeiro post da série). Neste site é possível criar até 5 nodes, ou seja, até 5 terminais separados, cada um com seu shell.

Considere cada node como uma maquina dentro de uma rede.

Assim que acessar o PWD (Play-With-Docker), clique no botão [+ ADD NEW INSTANCE] algumas vezes. Ele vai criar vários nodes, cada um com seu IP, que pode ser encontrado na parte superior da página.

O que vamos fazer é controlar o Docker de um node (node2) a partir de outro (node1). Sendo assim, clique no node2 e instale (pull) algumas imagens (mysql, wordpress e busybox, por exemplo).

Assim que você fizer isso, teremos o node1, que não tem imagens instaladas e o node2, que terá algumas imagens.

Para se conectar remotamente ao node2:

1 – Clique no node1 e acesse o terminal dele;
2 – Utilize o comando abaixo:

docker -H <ip do node2> images

Neste comando, no parâmetro -H (letra h tem que ser maiúscula), você informará o IP da maquina que deseja controlar. Na sequencia, você passa o comando que será executado.

Algumas considerações sobre esta abordagem: O ambiente do PWD é bem amigável, não possui muitas restrições de segurança e tudo está sempre acessível. Na sua rede local (ou do trabalho) isso também deve funcionar, mas para acessar um engine Docker de uma máquina que está em outra rede vai exigir um pouco mais de configurações e permissões. Como não tenho meios para prover um ambiente testável para vocês, não vou entrar muito neste ponto.

Caso este procedimento não funcione em sua rede local, pode ser que o engine do Docker foi instalado, mas a API remota não foi habilitada. Para resolver isso, siga os passos abaixo:

Habilitando API remota do Docker no Linux (Ubuntu):

Primeiro, edite o arquivo de configuração do Docker:

sudo nano /etc/default/docker

Adicione a seguinte linha ao final do arquivo:

DOCKER_OPTS="-H tcp://0.0.0.0:<port> -H unix:///var/run/docker.sock"

Na linha acima, substitua <port> pelo número da porta que você deseja utilizar. (Exemplo: 4243)

Para que a alteração tenha efeito, reinicie o serviço do Docker:

sudo service docker restart

Habilitando API remota do Docker no Windows:

  1. Acesse o menu de configuração (Settings)
  2. Na aba geral (General), marque a opção “Expose daemon on tcp://localhost:2375″ without TLS

Um alerta para habilitar a API remota desta forma:

Este recado vale tanto para Linux quanto para Windows: Habilitar acesso desta forma pode permitir que usuários não-root tenham acesso ao engine do Docker e isso gera possibilidades de falhas de segurança. Para mais informações sobre este assunto, recomendo ver esta página da documentação do Docker.

Este foi mais um post da série Docker. Estou planejando mais alguns, então aguardem! 🙂

Postagens nesta série