Como dimensionar contêineres Docker em produção

Então eu descobri recentemente esta ferramenta incrível, e diz

O Docker é um projeto de código aberto para criar facilmente contêineres leves, portáteis e autossuficientes de qualquer aplicativo. O mesmo contêiner que um desenvolvedor cria e testa em um laptop pode ser executado em escala, em produção, em VMs, bare-metal, clusters do OpenStack, nuvens públicas e muito mais.

Digamos que eu tenha uma imagem do docker que execute o Nginx e um website se conecte ao database externo. Como dimensiono o contêiner em produção?

A resposta curta é que você teria que escrever sua própria lógica para fazer isso.

Eu esperaria que esse tipo de recurso surgisse dos seguintes projetos, criados sobre o docker e projetados para suportar aplicativos em produção:

  • Flynn
  • deis
  • coreos
  • Mesos

Atualização 1

Outro projeto relacionado descobri recentemente:

  • maestro

Atualização 2

A última versão do Openstack contém suporte para gerenciar contêineres do Docker:

  • Docker Openstack
  • Zona de Paas no OpenStack

Atualização 3

Sistema para gerenciar instâncias do Docker

  • Estaleiro

E uma apresentação sobre como usar ferramentas como Packer , Docker e Serf para fornecer um padrão de infraestrutura de servidor imutável

  • FutureOps com infra-estrutura imutável
  • Slides

Atualização 4

Um artigo interessante sobre como conectar contêineres docker usando o servo :

  • Descentralizando o Docker: Como usar o servo com o Docker

Atualização 5

Execute o Docker em Mesos usando o framework Marathon

Mesosfera Docker Developer Tutorial

Atualização 6

Execute o Docker no Tsuru, pois ele suporta o cluster do docker e a implementação do planejador segregado

Atualização 7

Orquestração de ambientes baseados em Docker

maestro-ng

Atualização 8

decking.io

Atualização 9

Google kubernetes

Atualização 10

Redhat refactored seu PAAS openshift para integrar o Docker

  • Projeto Atômico
  • Geard

Atualização 11

Um Docker NodeJS lib envolvendo a linha de comando do Docker e gerenciando-a a partir de um arquivo json.

  • docker-cmd

Atualização 12

O novo serviço de contêiner da Amazon permite o dimensionamento no cluster.

Atualização 13

Estritamente falando, o Flocker não “dimensiona” os aplicativos, mas é projetado para atender a uma function relacionada de tornar os contêineres stateful (executando serviços de database?) Portáveis ​​em vários hosts do docker:

https://clusterhq.com/

Atualização 14

Um projeto para criar modelos portáteis que descrevem aplicativos do Docker:

http://panamax.io/

Atualização 15

O projeto Docker está agora abordando a orquestração de maneira nativa (ver anúncio )

  • Máquina Docker
  • Enxame de estivador
  • Docker compor

Atualização 16

Spotify Helios

Veja também:

Atualização 17

O projeto Openstack agora tem um novo projeto de “contêiner como serviço” chamado Magnum:

Mostra muita promise, permite a fácil configuração das estruturas de orquestração do Docker, como o Kubernetes e o Docker Swarm.

Atualização 18

Rancher é um projeto que está amadurecendo rapidamente

http://rancher.com/

Interface amigável e forte foco em infraestruturas híbridas do Docker

Atualização 19

O projeto Lattice é um desdobramento do Cloud Foundry para gerenciar clusters de contêineres.

Atualização 20

Docker comprou recentemente o Tutum:

https://www.docker.com/tutum

Atualização 21

Gerenciador de pacotes para aplicativos implantados no Kubernetes .

http://helm.sh/

Atualização 22

Vamp é uma plataforma de código aberto e auto-hospedada para gerenciar arquiteturas (micro) orientadas a serviços que dependem da tecnologia de contêineres.

http://vamp.io/

Atualização 23

Um Agendador Distribuído, Altamente Disponível, com Atendimento ao Datacenter

Dos caras que nos deram o Vagrant e outras ferramentas poderosas.

Atualização 24

Solução de hospedagem de contêineres para AWS, código aberto e baseado no Kubernetes

https://supergiant.io/

Atualização 25

Recipiente baseado em Apache Mesos hospedado na Alemanha

https://sloppy.io/features/#features

E a Docker Inc. também fornece um serviço de hospedagem de contêiner chamado nuvem Docker

https://cloud.docker.com/

Atualização 26

O Jelastic é um serviço PAAS hospedado que dimensiona contêineres automaticamente.

O Deis automatiza o dimensionamento de contêineres do Docker (entre outras coisas).

O Deis (pronuncia-se DAY-iss) é uma PaaS de código-fonte aberto que facilita a implantação e o gerenciamento de aplicativos em seus próprios servidores. O Deis se baseia no Docker e no CoreOS para fornecer uma PaaS leve com um stream de trabalho inspirado no Heroku.

Aqui está o stream de trabalho do desenvolvedor:

 deis create myapp # create a new deis app called "myapp" git push deis master # built with a buildpack or dockerfile deis scale web=16 worker=4 # scale up docker containers 

O Deis implanta automaticamente seus contêineres do Docker em um cluster do CoreOS e configura os roteadores Nginx para rotear solicitações para contêineres saudáveis ​​do Docker. Se um host morre, os contêineres são reiniciados automaticamente em outro host em segundos. Basta navegar até o URL do proxy ou usar o deis open para acessar seu aplicativo.

Alguns outros comandos úteis:

 deis config:set DATABASE_URL= # attach to a database w/ an envvar deis run make test # run ephemeral containers for one-off tasks deis logs # get aggregated logs for troubleshooting deis rollback v23 # rollback to a prior release 

Para ver isso em ação, confira o vídeo do terminal em http://deis.io/overview/ . Você também pode aprender sobre os conceitos do Deis ou ir direto para a implantação de sua própria PaaS privada .

Dê uma olhada no Rancher.com – ele pode gerenciar vários hosts do Docker e muito mais.

Você pode tentar Tsuru. Tsuru é uma fonte opensource PaaS inspirada em Heroku, e já está com alguns produtos em produção no Globo.com (arm de internet da maior empresa de televisão de transmissão do Brasil)

Ele gerencia todo o stream de um aplicativo, desde a criação do container, implantação, roteamento (com hipache) com muitos resources interessantes como cluster de docker, dimensionamento de unidades, deploy segregado, etc.

Dê uma olhada na nossa documentação abaixo: http://docs.tsuru.io/

Aqui nosso post cobrindo nosso ambiente: http://blog.tsuru.io/2014/04/04/running-tsuru-in-production-scaling-and-segregating-docker-containers/

Uma abordagem sensata para dimensionar o Docker poderia ser:

  1. Cada serviço será um contêiner docker
  2. Descoberta de serviço de contêiner Intra gerenciada por meio de links ( novo recurso da janela de encaixe 0.6.5 )
  3. Recipientes serão implantados através do Dokku
  4. As aplicações serão gerenciadas através do estaleiro que, por sua vez, está usando o hipache

Outro projeto open source docker da Yandex:

  • cocaína

Os caras do Openshift também criaram um projeto. Você pode encontrar mais informações aqui , tente contêiner de teste e informações detalhadas aqui . O único problema é que a solução é Redhat centric por enquanto 🙂

Apesar de sermos grandes fãs do Deis (deis.io) e estarem implantando ativamente nele, existem outras soluções de implantação de estilo Heroku como PaaS, incluindo:

Longshoreman do pessoal de Wayfinder:

https://github.com/longshoreman/longshoreman

Decker da CloudCredo, usando o CloudFoundry:

http://www.cloudcredo.com/decker-docker-cloud-foundry/

Quanto à orquestração direta, o projeto Centurion de código aberto da NewRelic parece bastante promissor:

https://github.com/newrelic/centurion

Dê uma olhada também no etcd e no Consul .

Panamax: Docker Management for Humans. panamax.io

Fig: Ambientes de desenvolvimento rápidos e isolados usando o Docker. fig.sh

Uma opção não mencionada em outros posts é o Helios. É construído por spotify e não tenta fazer muito.

https://github.com/spotify/helios

Intereting Posts