Olá,
O MundoDocker mostra hoje para vocês como funciona o Rancher, uma plataforma para deploy de sua infraestrutura Docker de forma fácil e controlada. O Rancher pode ser dividido em duas camadas: RancherOS, que é um sistema operacional minimalista (assim como o CoreOS) e a plataforma Rancher, vamos conhece-las mais:

RancheOS

O RancherOS, trás apenas as funções essenciais para o funcionamento do ambiente Docker, veja na imagem abaixo como é a arquitetura do RancherOS:

rancheroshowitworksFonte: http://docs.rancher.com/

O tamanho de uma imagem do RancherOS é de de 20MB, e possui tudo que é necessário para montar seu servidor para deploy de containers Docker. Como pode ser visto na imagem acima, o RancherOS é uma kernel base bem limitado, e toda a plataforma do Rancher é montada em cima de containers, sendo o init do sistema, chamado PID 1, é feito dentro de um container Docker, e os demais serviços (udev, dhcp, etc) são inicializados dentro de outros containers. Como você deve ter notado, no RancherOS o Docker faz o trabalho do sistema de inicialização (sysvinit ou systemd), comum em outros distribuições Linux.

Outro ponto interessante é que, como o RancherOS inicializa dentro de um container, o próprio serviço Docker a nível de usuário executa dentro um container Docker, ou seja, os containers de aplicação (que o usuário cria) são inicializados dentro do container de sistema, isso garante ainda mais isolamento e claro segurança, pois inclusive o sistema está encapsulado dentro de um container.

Rancher

Rancher é um software opensource que possibilita a criação de uma plataforma privada para criação de containers. Através dele é possível administrar todos os pontos de seu ambiente Docker, incluindo: orquestração, loadbalance, volumes e rede. E ainda é possível fazer a diferenciação entre usuários, ou seja, você pode criar um pool de recursos para seu desenvolvedor e ele mesmo poderá criar quantos containers quiser e puder, isso é muito útil para da liberdade e ainda assim garantir controle.

Um grande ponto positivo do Rancher, é você não ser obrigado a usar o RancherOS (claro que isso é muito recomendado), basta você subir seu servidor com Docker instalado e instalar tanto a plataforma quanto os agentes do Rancher dentro de containers.

Vamos a prática? Partimos do principio que você já tenha o Docker instalado, agora execute:

docker run -d --restart=always -p 8080:8080 rancher/server

Esse comando criará um containers com o servidor Rancher já pronto, feito isso basta acessar via web o ipdoservidor:8080, veja na imagem:

Rancher01

Veja que ele deixa em destaque a informação de que não foi configurado uma forma de acesso, para fazer isso vá até: Admin – Access Control, e habilite a forma que desejar, em nosso exemplo escolhemos Local, ou seja, utilizarei usuário criados dentro do Rancher mesmo, após isso crie seu primeiro usuário administrativo e salve, em seguida faça logout da plataforma e acesse: ipdoservidor:8080/login e acesse com os dados que você acabou de criar:

Rancher02

Depois de logado, clique em Add Host, para adicionar um host a ser manipulado pelo Rancher, lembre-se, você pode ou não adicionar o host onde está executando o servidor Rancher, se escolher adicionar ele deixe marcado a opção que vem e clique em Save, na próxima tela você pode escolher um dos provedores (Amazon, Digital Ocean, RackSpace, etc) para fazer deploy de seus hosts, como vamos adicionar o host local, clique me Custom, o Rancher lhe informará alguns dados que você deverá seguir, como por exemplo liberar porta no firewall e executar um comando para adicionar o Rancher Agent, veja:

Rancher03

Feito isso você verá que foi adicionado um host em seu dashboard. A partir de agora basta você criar os containers que desejar e claro fazer toda a definição de usuários, pool de recursos e o que mais for interessante para você.

Isso é o básico sobre o Rancher, mas o suficiente para você entender a ferramenta e dar o uso adequado a ela dentro do seu ambiente, em posts futuros falaremos mais sobre ela e traremos alguns exemplos práticos de uso do Rancher para deploy de container e automação de infraestrutura.

Esperamos ter ajudado, e nos ajude divulgando o MundoDocker. Abraço!

Entusiasta Open Source, seu principal foco é ir atrás de ideias novas e torna-las realidade através de soluções simples e eficientes, o menos é mais, e o dividir é multiplicar.
  • o docker coloca o ip na faixa 172.17.0.1 e não é possível acessar esse ip pelo browser, pois não fica na rede local o que tem que ser feito ?

    utilizo um servidor linux debian e putty para acessar por ssh

  • Olá Rodrigo,

    Para você acessar via Browser o container existem duas maneiras a primeira você vai ter que compartilhar uma porta do seu host com uma do container:

    Ex: docker run 5000:80

    A porta 5000 é a do host e a porta 80 é a do container.

    Depois é só acessar no seu browser “iphost:5000” e então você será redirecionado para o processo que está sendo executado na porta 80 do seu container.

    A segunda maneira é você colocar algum proxy na frente com nginx ou haproxy. Nesse link abaixo tem um post que mostramos as duas maneiras.

    http://www.mundodocker.com.br/criando-um-servidor-web/

  • Eduardo Wutzl

    Excelente conteúdo ! Estão de parabéns pelo trabalho!

  • Oi Eduardo,
    Obrigado pelo feedback, para nós isso é muito importante, pois define quais assuntos devemos abordar e como está sendo essa passagem de conhecimento.
    Mais uma vez obrigado, e um abraço.

  • Mateus Quevedo

    Pessoal, vi o rancher (no site oficial deles) e achei ele muito foda, porem não consegui usar ele. Como que eu add um host local? Estou colocando o ip que o docker criou pra mim (http://192.168.99.100) no rancher e ele me gera um código

    sudo docker run -e CATTLE_AGENT_IP=”http://192.168.99.100″ -d –privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.0.2 http://192.168.99.100:8080/v1/scripts/DFC462D70D357F801121:1470430800000:r4Lk3IWEAIefio3HI2xUVJ2hc0M

    porem quando colo isso no terminal ele me da a seguinte mensagem:
    docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?

    poderiam a me ajudar a conseguir trabalhar com o rancher localmente? Obrigado

  • Olá @mateusquevedo:disqus

    Verifique se o serviço do Docker está rodando em sua máquina:

    “systemctl status docker”

    Se não estiver como running é só executar:

    “systemctl start docker”

    Em todos os casos que tivemos com essa mensagem o problema era esse.

    Se não resolver coloque aqui a saída do “systemctl status docker”.

    Obrigado!

  • Mateus Quevedo

    nada pessoal. Eu estou usando ele no mac (docker toolbox), quando eu digito qualquer um desses 2 comandos, ele me retorna que o comando não existe.

    bash: systemctl: command not found

  • Oi Mateus,
    O que você acha de marcarmos um hangouts e você nos mostra o que está ocorrendo.

  • Mateus Quevedo

    bá seria ótimo, quando vc pode? 🙂

  • não sei se já resolveu seu problema, mas quando isso acontecia comigo, é pq o comando `docker` não está listado no terminal, mas ai era só rodar `eval $(docker-machine env default)` que resolvia…