CodeGym /Cursos /Docker SELF /Docker: história do surgimento e conceitos básicos

Docker: história do surgimento e conceitos básicos

Docker SELF
Nível 9 , Lição 0
Disponível

1.1 História do surgimento do Docker

Os primeiros anos e o contexto:

A história do Docker começou muito antes do seu nascimento oficial em 2013. No início dos anos 2000, a virtualização já era popular, mas as máquinas virtuais tradicionais exigiam muitos recursos e não eram muito flexíveis. Foi nessa época que surgiu a ideia da containerização. O LXC (Linux Containers) foi um dos primeiros projetos que permitiram rodar containers isolados usando os recursos do kernel Linux.

O nascimento da ideia:

O Docker apareceu como parte de um projeto interno da empresa dotCloud — uma startup fundada por Solomon Hykes e Sebastien Pahl em 2010. A dotCloud oferecia plataforma como serviço (PaaS) e dava aos devs ferramentas pra deploy e gerenciamento de apps web. Mas, enquanto a equipe trabalhava na dotCloud, eles enfrentaram problemas de isolamento de apps e gerenciamento de dependências. Foi aí que surgiu a ideia de criar uma tecnologia de container universal pra resolver essas paradas.

Desenvolvimento e primeiro lançamento:

Basicamente, as primeiras versões do Docker vieram da dotCloud, e o seu "pai oficial" é o Solomon Hykes. Primeiro, o Docker foi anunciado na conferência PyCon em março de 2013, e depois o código-fonte foi publicado no GitHub. Inicialmente, o Docker usava o LXC (Linux Containers), mas, mais tarde, a equipe desenvolveu sua própria implementação de containers, o que melhorou o desempenho e a flexibilidade do sistema.

Reconhecimento e crescimento da comunidade:

O Docker rapidamente chamou a atenção dos devs e especialistas de TI. Não é surpresa: ele é fácil de configurar e as possibilidades são enormes. Meses após o anúncio, o projeto ganhou muitas estrelas no GitHub e reuniu uma comunidade ativa de contribuidores. Em 2014, a empresa dotCloud mudou o nome pra Docker, Inc., focando no desenvolvimento da nova plataforma de containers.

Um marco na história do Docker foi o reconhecimento por grandes empresas do mercado de TI. Em 2014, Red Hat, Google e Microsoft começaram a apoiar ativamente o Docker, integrando-o em seus produtos e serviços. Isso ajudou na rápida popularização e consolidou o status do Docker como padrão de fato em containerização.

Parcerias e ecossistema:

O Docker continuou a crescer e atrair investimentos. Em 2014, a empresa recebeu 40 milhões de dólares na rodada de financiamento Série C (Série C - terceira etapa de financiamento de startups que já tiveram algum sucesso e querem crescer mais), o que permitiu aumentar a equipe e acelerar o desenvolvimento. O Docker começou a colaborar ativamente com outras empresas, criando um ecossistema ao redor da plataforma. Foram lançados projetos como Docker Compose (pra gerenciar aplicações multicontainer) e Docker Swarm (pra orquestração de containers).

Em 2015, o Docker anunciou uma parceria estratégica com a Microsoft, o que permitiu integrar o Docker no Windows Server e no Azure. Isso foi um passo importante pra expandir a tecnologia de containerização além da comunidade Linux e tornou o Docker acessível pra um público mais amplo.

Concorrência e padronização:

Com o crescimento da popularidade do Docker, surgiram projetos e tecnologias concorrentes no mercado. Em 2015, o Google apresentou o Kubernetes — um sistema de orquestração de containers que rapidamente ficou popular por conta da sua flexibilidade e funcionalidade. Apesar da concorrência, o Docker e o Kubernetes se complementaram, formando a base da infraestrutura moderna de containers.

Em 2017, o Docker começou a apoiar a Open Container Initiative (OCI) — um projeto pra padronizar os formatos de containers e seu runtime. Isso garantiu compatibilidade entre diferentes plataformas de containers e facilitou a integração do Docker com outras ferramentas.

Status atual e futuro:

Hoje, o Docker continua sendo uma ferramenta chave no arsenal dos devs e admins de sistemas. Seu ecossistema continua crescendo, incluindo projetos como Docker Desktop (pra trabalhar com Docker em máquinas locais) e Docker Hub (registro público de imagens).

O Docker está ativamente desenvolvendo tecnologias de segurança, desempenho e facilidade de uso. Por exemplo, o Docker Content Trust garante a verificação da integridade e autenticidade das imagens, enquanto o Docker Scan ajuda a identificar vulnerabilidades nos containers.

1.2 Conceitos básicos do Docker

0. Máquina virtual "virtual"

Do ponto de vista de uma aplicação rodando dentro de um container Docker, o container Docker é uma máquina virtual. Mas, ao contrário das máquinas virtuais comuns, o Docker é um sistema bem leve. Porque, na real, ele não é uma máquina virtual completa, mas sim uma máquina virtual "virtual".

O sistema operacional Linux permite isolar aplicações umas das outras a ponto de cada uma funcionar como se estivesse em seu próprio sistema operacional. Esse ambiente único, que roda sobre o sistema operacional real, é o que chamamos de container.

1. Isolamento:

Uma das principais características do Docker é a habilidade de garantir o isolamento das aplicações e suas dependências. Isso é conseguido com namespaces e cgroups no kernel do Linux. Os namespaces garantem a separação dos processos: cada container tem seu próprio conjunto de processos, interfaces de rede e sistema de arquivos. Já os cgroups permitem limitar e controlar o uso de recursos (CPU, memória e disco) por cada container. Esse isolamento torna os containers independentes uns dos outros e do sistema host, aumentando a segurança e confiabilidade das aplicações.

2. Portabilidade:

O Docker oferece alta portabilidade para aplicações. Isso significa que um mesmo container pode ser executado em qualquer servidor: no computador local do desenvolvedor, em um ambiente de teste ou em uma plataforma na nuvem. Todo o ambiente de execução, incluindo o código da aplicação, dependências, bibliotecas e arquivos de configuração, é empacotado no container. Isso elimina problemas de incompatibilidade do ambiente e dá aos desenvolvedores a certeza de que suas aplicações funcionarão em qualquer lugar sem alterações.

3. Leveza:

Diferente de máquinas virtuais que exigem um sistema operacional separado para cada instância, os containers Docker utilizam o kernel do sistema host. Isso torna os containers muito mais leves e rápidos de iniciar. Além disso, eles ocupam menos espaço em disco e consomem menos memória, permitindo rodar muito mais containers em um único servidor comparado com máquinas virtuais.

4. Imagens Docker:

Uma imagem Docker é um modelo a partir do qual os containers são criados. A imagem contém tudo o que é necessário para a aplicação funcionar: código, bibliotecas, dependências e arquivos de configuração. É possível criar imagens do zero usando o Dockerfile — um script especial que descreve os passos para criar uma imagem. Além disso, existe uma infinidade de imagens prontas no Docker Hub — um repositório público de imagens Docker. O Docker Hub permite que desenvolvedores compartilhem suas imagens e utilizem imagens criadas por outros.

5. Sistema de arquivos em camadas:

O Docker usa um sistema de arquivos em camadas (Union File System), que economiza espaço e recursos. Cada imagem é composta de várias camadas, onde cada camada representa alterações em relação à anterior. Por exemplo, uma camada pode conter o sistema operacional base, outra bibliotecas instaladas, e outra o código da aplicação. Quando um container é criado a partir de uma imagem, é adicionada uma nova camada para gravação de alterações, sem afetar as camadas originais. Isso reduz o volume de dados transmitidos pela rede e acelera o processo de criação de containers.

6. Automação e orquestração:

O Docker permite automatizar a construção, teste e deploy de aplicações com várias ferramentas. O Docker Compose é utilizado para gerenciar aplicações multicontainer. Com ele, é possível descrever todos os serviços em um único arquivo (docker-compose.yml) e iniciá-los com um único comando. Para orquestrar containers em grandes clusters, usamos o Kubernetes — um sistema de gerenciamento de containers que oferece escalonamento automático, recuperação de falhas e balanceamento de carga.

1.3 Utilização do Docker

Docker é amplamente usado em várias áreas de TI. Vamos dar uma olhada nas principais direções:

1. Desenvolvimento e teste:

Desenvolvedores usam Docker pra criar ambientes isolados de desenvolvimento e teste. Isso permite trabalhar com diferentes versões de bibliotecas e frameworks sem conflitos. Testadores podem rapidamente montar ambientes pra executar testes automatizados.

2. Integração e implantação contínuas (CI/CD):

Docker facilita o processo de integração e implantação contínuas. Com ele, dá pra criar imagens de aplicações e testá-las em cada etapa da build, o que torna o processo de implantação confiável e previsível.

3. Microsserviços:

Docker é a solução perfeita pra arquitetura de microsserviços. Nessa arquitetura, a aplicação é dividida em pequenos serviços independentes, cada um podendo ser implantado e escalado separadamente.

4. Computação em nuvem:

Docker facilita a implantação de aplicações na nuvem graças a um formato único de empacotamento de todos os componentes. Isso garante uma transferência fácil de aplicações entre diferentes plataformas de nuvem e servidores locais.

A história do Docker é um caminho de inovações e colaboração que mudou a indústria de TI. Começando como um projeto interno de uma pequena startup, o Docker se transformou em um fenômeno global que continua influenciando o desenvolvimento e a implantação de aplicações ao redor do mundo. Esse caminho mostra como uma ideia, realizada com persistência e uma visão clara, pode transformar uma indústria inteira.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION