- Publicado em
- 28/12/2023
Carregando...
O que é Docker?
O Docker é desenvolvido pela Docker, Inc, a entidade corporativa por trás do projeto Docker. Conforme descrito no site , o Docker é uma "plataforma aberta para desenvolvedores e administradores de sistemas para construir, enviar e executar aplicativos distribuídos, seja em laptops, VMs de datacenter ou na nuvem". Ele permite que você coloque um aplicativo com todas as suas dependências em uma unidade padronizada chamada de recipiente. Um contêiner inclui tudo o que precisa para executar: código, bibliotecas de sistema, ferramentas e outras dependências.
Docker permite que você quebre seu aplicativo monolítico em muitos "pequenos aplicativos" com uma complexidade reduzida e coloque-os em recipientes separados. Desta forma, muitas pequenas equipes podem funcionar em seu próprio aplicativo, usando a melhor tecnologia para sua tarefa (você não está vinculado à mesma tecnologia que o aplicativo inteiro). Além disso, tem grande sinergia com todo o conceito de microservices.
Além disso, você pode criar seu aplicativo em um recipiente que é executado no seu laptop ou em uma máquina virtual, na nuvem ou em qualquer lugar que desejar, e tenha certeza de que funcionará da mesma maneira em cada ambiente .
Os recipientes são uma ideia antiga.Os recipientes e, especificamente, os recipientes Linux (LXC), não são novos. Eles são derivados do recurso kernel do Linux chamado grupos de controle (originalmente cgroups), desenvolvido pelos engenheiros do Google. A LXC combina cgroups e suporte para namespaces isolados para fornecer um ambiente isolado para aplicativos. É um nível muito baixo, o recurso do sistema operacional para a virtualização. Ele oferece um ambiente o mais próximo possível de uma máquina virtual, mas sem a sobrecarga que vem com a simulação de todo o hardware. Os recipientes Linux foram usados por grandes empresas, como Oracle, HP e IBM há anos. O Docker originalmente foi baseado em LXC, mas agora usa a biblioteca libcontainer como sua própria maneira de usar os recursos de virtualização do kernel Linux.
Diferença entre recipientes e máquinas virtuais.Você pode perguntar qual é a diferença entre máquinas virtuais e contêineres?
É tudo sobre o escopo. As máquinas virtuais são pesadas, obtêm mais isolamento e são mais seguras. Por outro lado, os recipientes são leves e rápidos, mas fornecem um pouco menos de isolamento. As máquinas virtuais imitam uma máquina inteira, enquanto os contêineres compartilham muitos recursos do sistema operacional do host. Você pode executar algumas máquinas virtuais ao mesmo tempo, enquanto centenas de contêineres que funcionam simultaneamente não serão um problema. Os recipientes são muito leves e rápidos. Deliciosamente.
Obviamente, nenhum dos dois é melhor. Depende realmente do que você está tentando alcançar. Se você precisa de uma "máquina" virtual de pleno direito que seja capaz de executar muitos sistemas operacionais, como Windows, Solaris e Linux, para citar alguns, ou qualquer versão recente do sistema operacional, então escolha tecnologias de máquinas virtuais. No entanto, se você precisa apenas de um software capaz de isolar processos únicos ou grupos dentro do mesmo sistema operacional, então você pode estar interessado em tecnologias de contêiner, especialmente no Docker. É muito importante entender o alcance dessas várias tecnologias. Lembre-se de usar a ferramenta certa para o trabalho.
Casos de uso de docasEu tenho experimentado com tecnologias de contêiner por alguns meses e posso simplesmente dizer que existem muitos casos de uso sólido para eles, como:
Recipientes como um banco de dados de memória muito rápido para o desenvolvimento orientado por teste Recipientes como dependências de simulação leves em testes de integração (Redis, ØMQ, etc.) Simplificando seus ambientes de desenvolvimento e teste. Não há mais síndrome de "funciona na minha máquina". Ajuste natural para o padrão microservices
Há também muitos projetos legais construídos sobre os contêineres:
Dokku. Você quer construir seu próprio clone de mini-heroku? Deis. PaaS de fonte aberta. Tutum. Crie, implante e gerencie seus aplicativos em qualquer nuvem. CoreOS e suas ferramentas - etc., frota, etc. Envio. Desenvolvimento contínuo sem código DevOps. Servo. Solução descentralizada para associação de cluster, detecção de falhas e orquestração Kubernetes. Gerencie um conjunto de recipientes como um único sistema. Cais. Pense "Github para contêineres". Tmpnb. Cria servidores Jupyter Notebooks temporários usando contêiner Docker. Muitas outras ferramentas ...
Devo usar isso de imediato?
Bem, a resposta é simplesmente não. Antes de usá-lo, você deve pensar muito cuidadosamente sobre sua arquitetura atual e verificar se Docker se encaixa nela. Não é um unicórnio mágico nem uma varinha mágica que vai resolver todos os seus problemas. No entanto, pode ajudar, se usado corretamente. Pode simplificar as coisas, mas, por outro lado, adiciona outra camada de abstração. Antes de deixar as configurações atuais e mergulhar no Docker, eu encorajo você a verificar o site oficial do docker e lê-lo.
A tecnologia de contêiner tornou-se um tópico muito quente nos dias de hoje e vai ter ainda mais atenção. Muitas empresas em todo o mundo, incluindo gigantes tecnológicos líderes como Amazon e Google, estão adotando e adicionando um serviço de contêiner para suas plataformas. Isso pode simplificar muito o processo de desenvolvimento de aplicativos. Os desenvolvedores podem se concentrar em resolver problemas que realmente importam para eles e parar de se preocupar com detalhes de baixo nível. O mundo das TI torna-se uma rede conectada de APIs muito específicas que cada uma resolve um problema complexo. Ele evolui para um serviço baseado na nuvem que faz um trabalho e o faz muito bem.
Docker popularizou uma maneira de pensar em termos de virtualização. É uma ótima ferramenta que tem seus usos. Eu acho que os recipientes, máquinas virtuais e todas as outras tecnologias de virtualização são o caminho do futuro.
A automação é o futuro.
Vejo você na nuvem!
Fonte: http://www.tivix.com/blog/docker-future-or-just-another-buzzword/