Skip to main content

O projeto Docker completa 10 anos! Relembre uma década de contêineres

Escrito por
secure containerized applications

17 de março de 2023

0 minutos de leitura

Em 15 de março de 2023, completaram-se 10 anos da famosa palestra relâmpago de Solomon Hyke na PyCon, quando ele apresentou o Docker ao mundo.

Vamos relembrar tudo o que mudou e conhecer histórias de quem abriu caminho para o mundo conteinerizado em que vivemos hoje. Abri minha pequena agenda de contatos de contêineres e cloud native e pedi que compartilhassem histórias sobre como conheceram o Docker e relatos interessantes dos bastidores ao longo da década desde que conhecemos Moby e Molly.

Olá, mundo!

Solomon Hykes apresentando o Docker, com a famosa grafia incorreta de “Hello wowrld” na tela atrás dele.
Solomon Hykes falando na PyCon 2013

Em 2013, o mundo conheceu o Docker. Para muitos desenvolvedores, foi nosso primeiro contato com conceitos como c-groups, namespaces e outras tecnologias Linux usadas para “conter” processos. Como o pessoal do Docker gosta de dizer, eles “democratizaram” a tecnologia de contêineres, tornando-a fácil de usar sem precisar ser especialista em administração de sistemas Linux.

De cair o queixo e mágico

Ao perguntar às pessoas sobre suas primeiras experiências com o Docker, algumas palavras apareceram várias vezes: mágico, de cair o queixo e aquele momento de “agora entendi”.

Nirmal Mehta no palco da DockerCon 2015
Nirmal Mehta falando na DockerCon 2015

Imagine a cena: Portland, Oregon, em 2013, na conferência OpenSource da O'Reilly. Fazia poucos meses que o Docker tinha surgido como projeto de código aberto, e ele já ganhava popularidade em várias comunidades de TI: código aberto, cloud, DevOps etc. Era o último dia da conferência, e participei de uma sessão numa manhã de sexta-feira sobre essa novidade chamada Docker! Solomon Hykes era o palestrante e foi direto aos conceitos da camada de contêineres, explicando os recursos e as tecnologias subjacentes. Para terminar, fez uma demonstração e, se não me falha a memória, iniciou 5, 10, 15, 20 contêineres apache/httpd em questão de segundos! Até para o pequeno grupo de pessoas sonolentas naquela manhã — e principalmente para mim — aquilo foi de cair o queixo... Na hora, tive a sensação de estar presenciando o início de uma mudança de paradigma e quis saber tudo sobre aquilo!

Sei que o Docker não foi o primeiro a reunir as tecnologias subjacentes para criar processos/contêineres isolados, mas a experiência de uso que vi naquele dia — e que continua até hoje — foi mágica.

- Nirmal Mehta, especialista principal em soluções, AWS

Captura de tela de um post no Twitter com Brandon Mitchell agasalhado e usando produtos do Docker. Legenda: "Enquanto todos distribuem camisetas, o Docker está me preparando para uma grande tempestade de inverno em Barcelona. Perdi algo na previsão?"
Brandon Mitchell agasalhado com produtos promocionais do Docker

Lembro da primeira vez que usei o Docker, depois de passar por todo o processo de configurar uma VM para executar o nginx com ferramentas como Ansible e Chef. Eu levava uma hora para criar um playbook, configurá-lo para a VM que tinha iniciado e esperar a instalação terminar. Então, executei o comando do Docker para iniciar o nginx e, em menos de 30 segundos, o processo já estava rodando naquele ambiente isolado e mágico. Foi isso que me fisgou e deu início à jornada para descobrir o que tinha acabado de acontecer e como o Docker funcionava.

- Brandon Mitchell, arquiteto de soluções na BoxBoat, uma empresa IBM

Descobrir o Docker foi como descobrir poderes mágicos. Eu já tinha passado por algo parecido quando a virtualização substituiu os servidores, dando-me o poder de reunir VMs na infraestrutura física e aproveitá-la ao máximo. O Docker foi como descer a outro nível do sonho: agora eu podia empacotar aplicações em VMs e aproveitar ainda melhor o hardware.

- Adrian Goins, ex-advocate de desenvolvedores na Rancher/SUSE

Andy Clemenko, engenheiro de campo da Rancher Government Solutions
Andy Clemenko, um dos primeiros a adotar o Docker e engenheiro de campo

No início de 2015, meu empregador me pediu para virar especialista em “Docker”. Eu sabia muito pouco, além de ter lido algumas publicações no site Orange, então comecei a experimentar. Como todo mundo, comecei com o clássico exemplo “Hello, World!” do Docker usando Nginx. Para mim, o momento de “agora entendi” foi imediato. Como administrador de sistemas há muitos anos, vi o isolamento de processos como um enorme avanço. A partir daquele dia, direcionei toda a minha carreira para os contêineres. Tive a sorte de ajudar o governo dos EUA a começar a adotar contêineres em várias agências. Depois de um ano e meio, tive a oportunidade de continuar minha jornada com o Docker entrando para a empresa.

- Andy Clemenko, engenheiro de campo na Rancher Government Solutions

Cenário apocalíptico

David Flanagan, que adotou o Docker logo no primeiro ano, percebeu rapidamente como a tecnologia poderia revolucionar as implantações na empresa.

David Flanagan e seu filho bebê dando boas risadas
David Flanagan, fundador da Rawkode Academy e pai divertido

Ouvi falar do Docker pela primeira vez na demonstração de Solomon na PyCon de 2013. Na época, eu trabalhava como diretor de desenvolvimento em uma empresa britânica de rádio e revistas e tentava ajudá-la a trazer o negócio para o século 21... transformação digital, sabe? O maior problema era a escala, e tínhamos um cenário “apocalíptico”: “Como vamos lidar com a morte do Lemmy, do Motörhead?”. Nossa carga era extremamente previsível, até deixar de ser. Não dá para prever as notícias, e é preciso escalar em tempo real o mais rápido possível.

Já usávamos Vagrant e VMs havia algum tempo, mas escalá-los rapidamente era doloroso. Precisávamos provisionar recursos a mais com antecedência e reduzir tudo depressa quando o “evento” terminava, para cortar custos. Quando vimos o Docker, foi como uma lâmpada que se acende. Só que... naquela época, o Docker ainda não tinha o comando “docker build”... Mas ele veio logo depois, junto com o slogan que continua em uso até hoje: “Build. Ship. Run”. O Docker não resolveu apenas o problema de execução: tornou extremamente simples para os desenvolvedores criar imagens de contêineres e também ofereceu distribuição (ship). O Kubernetes e o Cloud Native devem muito à equipe original da dotCloud, independentemente do ambiente de execução de contêineres que usamos hoje.

- David Flanagan, fundador da Rawkode Academy

Estabilizando a grade

Também uso o Docker desde os primeiros dias e — se me permitem a ousadia — foi assim que aconteceu comigo.

Eric Smalling e amigos em uma festa da Kubecon 2022
Captura de tela do Twitter de James Spurin: ele, Eric Smalling, Bret Fisher, Chad Crowell, Kunal Kushwaha e Ramesh Kumar na KubeCon 2022

Comecei a experimentar o Docker no fim de 2013, usando-o em nossos pipelines de CI, nos quais precisávamos executar centenas de testes funcionais de ponta a ponta a cada commit de uma grande aplicação de e-commerce. Nos horários de pico, chegávamos a executar mais de 2.000 instâncias de navegador em grids Selenium2 baseadas em VMs, e nosso maior problema eram os resultados inconsistentes dos testes causados pela instabilidade da grid. Iniciávamos e encerrávamos instâncias na nuvem constantemente e, ao longo dos anos, tentamos várias estratégias para reduzir o tempo de inicialização, manter a estabilidade e minimizar custos. Chegamos a testar instâncias spot e entramos em guerras de lances em várias regiões!

Já estávamos testando o Docker para executar a aplicação web e os controladores da suíte de testes, mas meu momento de “agora entendi” veio quando percebi que podia criar uma imagem com o navegador e o xvfb e iniciá-la instantaneamente. Assim, conseguimos executar grids Selenium estáveis com o máximo de navegadores que coubesse em um único nó! (Os problemas de estabilidade da grid geralmente aconteciam porque o nó não conseguia escalar para muitos navegadores, o que nos obrigava a usar vários nós pequenos, cada um com poucos navegadores.) Deu tão certo que praticamente abandonamos as instâncias na nuvem e passamos a usar apenas algumas VMs locais para essas grids, economizando milhares de dólares por semana.

- Eric Smalling, defensor sênior de desenvolvedores na Snyk

Convencendo as pessoas

Para quem está começando a desenvolver software corporativo, as vantagens dos contêineres e do ecossistema que surgiu em torno deles podem parecer óbvias. Mas, nos primeiros cinco ou seis anos, o futuro do Docker estava longe de ser certo.

Os resultados falam por si

Mudar costuma ser difícil, mas os benefícios concretos do Docker fizeram com que sua adoção fosse fácil:

Eu tinha o hábito de trazer novidades tecnológicas, então sempre havia certa irritação com o “lá vem mais um brinquedo do Dave”. A maioria da minha equipe usava Mac, então com certeza eles me odiavam!

Mas, para nós, o Docker era usado principalmente no servidor. O boot2docker ainda não existia, então a equipe continuou usando o Vagrant para desenvolvimento. Acabamos levando o Docker para esse ambiente quando a própria situação mostrou que fazia sentido. A equipe viu como ele simplificava nosso pipeline de implantação e acabou se convencendo.

Ficou difícil argumentar contra quando o tempo das implantações caiu de 40 minutos para cerca de 3!

- David Flanagan

Sevi Karakula atrás de um laptop, estendendo o braço e apontando para um adesivo da Container Solutions que diz "Shift happens"
Sevi Karakula fazendo a mudança acontecer!

Quando conheci o Docker, eu já trabalhava havia tempo suficiente como desenvolvedor de software para saber como pode ser difícil integrar alguém à equipe e configurar todas as ferramentas necessárias. Além disso, sempre que tentávamos incluir novos frameworks e linguagens no ambiente de desenvolvimento — para deixar tudo um pouco mais leve —, isso costumava ser complicado, porque a reação habitual da maioria dos desenvolvedores era revirar os olhos.

O Docker facilitou muito nossa vida: bastava ensinar à equipe a usar uma ferramenta mágica e, logo de cara, todos percebiam os benefícios, sem precisar lidar com a complexidade de instalação e configuração. Foi um grande momento de libertação para os desenvolvedores: não era mais preciso instalar cada ferramenta em uma máquina rigidamente monitorada, correr atrás de aprovações nem se preocupar com licenças. Se havia uma imagem, era só usar.

- Sevi Karakulak, líder de engenharia na Container Solutions

“Pronto para empresas”?

A expressão “pronto para empresas” é subjetiva e pode significar coisas diferentes para cada empresa. Matt Bentley conta uma história interessante sobre sua experiência como engenheiro de soluções no Docker, quando precisou lidar com o quanto a tecnologia era — ou, naquele caso, não era — “atraente” nos primeiros dias.

Matt Betley em pé atrás do balcão de um estande na DockerCon 2019, com as mãos apoiadas no balcão e usando um crachá com os dizeres "Docker Team"
Matt Bentley na DockerCon 2019

… o cliente adorava o Docker como tecnologia e também adorava o produto Docker Trusted Registry. Mas, até termos algo além de uma interface baseada apenas em API e linha de comando, a liderança da empresa nunca o consideraria pronto para o uso corporativo.

Eles tinham um processo que exigia demonstrações internas dos produtos. Se eu mostrasse o que havia feito — um pipeline de CI/CD no Jenkins que recebia o código, compilava e testava em um contêiner, fazia a implantação e promovia a imagem —, eles não entenderiam, porque soluções prontas para empresas precisavam ter interfaces gráficas bonitas.

- Matt Bentley, gerente de engenharia de soluções na VMware

Outra preocupação bastante comum era a falta de maturidade do projeto. Mesmo com tecnologias subjacentes que existiam havia muitos anos, apostar em um projeto de código aberto criado por uma startup, com mascotes de desenho animado e uma tartaruga de estimação fazendo implantações, era demais para muita gente.

Eric Smalling e Rachel Leeken na festa da AWS no KubeCon EU 2022
Rachel Leeken e Eric Smalling na KubeCon EU 2022

Comecei a aprender sobre o Docker em 2015 e, pelo potencial que enxerguei, sugeri que valia a pena considerá-lo para modernizar os sistemas, em vez de usar a solução antiga e cara de um fornecedor. O cliente não quis adotar a tecnologia, dizendo que não tinha certeza sobre contêineres nem se eles ainda existiriam ao fim do contrato de cinco anos.

- Rachel LeeKin, especialista em soluções de contêineres na AWS

Dando um tiro no próprio pé

Às vezes, fazer uma equipe adotar contêineres não era a parte mais difícil. O desafio era orientá-la para fazer isso direito.

Adrian Goins usando capacete e com vários equipamentos de câmera, ao lado de uma aeronave paramotora quadricóptero laranja e preta
Adrian Goins e o Iron Condor, seu paramotor de quatro rodas


No começo, era difícil convencer meus clientes a usar contêineres… Quem entendia a ideia nem sempre compreendia os benefícios ou como aproveitar a tecnologia. Lembro de um cliente que entrava nos contêineres por meio do shell, recompilava a aplicação ou suas dependências e depois fazia o commit do contêiner como se fosse um repositório de código. Os contêineres de produção eram enormes e provavelmente mais frágeis do que a infraestrutura original, sem contêineres.

- Adrian Goins

O interesse cresce

Com o passar dos anos, cada vez mais pessoas começaram a perceber o potencial dos contêineres, especialmente à medida que os orquestradores amadureciam — embora eles também trouxessem seus próprios desafios. Adrian Mouat (@adrianmouat | @adrianmouat@hachyderm.io), autor e outro Docker Captain das antigas, relembra as primeiras conferências DockerCon e a intensa movimentação quando cada vez mais pessoas começaram a experimentar essa tecnologia e empresas passaram a oferecer soluções para atender às suas necessidades.

Selfie com Betty Junod, Adrian Mouat, Eric Smalling e Matt Jarvis, com arranha-céus ao fundo. Foto tirada durante o Kubecon North America 2022, em Detroit, Michigan.
Adrian Mouat com Betty Junod, Eric Smalling e Matt Jarvis na KubeCon NA 2022

Uma coisa de que me lembro bem é que, em 2014, os palestrantes (eu inclusive) perguntavam: “Quem usa Docker?”. Uma floresta de mãos se levantava. “Quem usa Docker em produção?” Praticamente todas as mãos abaixavam.

Dito isso, o número de pessoas que já usavam Docker em produção antes mesmo da versão 1.0 (outubro de 2014) e de ele ser declarado pronto para produção era impressionante.

Costumávamos usar metáforas náuticas e falar de como isso resolvia o problema do “mas funciona na minha máquina” — infelizmente, o k8s apareceu e recriou esse problema.

Quando eu trabalhava na Container Solutions, ajudamos a organizar a primeira Docker Con EU no NEMO Science Center. O entusiasmo era incrível; todo mundo sabia que estava no começo de algo grandioso. A CoreOS estava lá (lançando o Rocket!), Alexis Richardson promovia a rede Weave, Luke Marsden liderava a ClusterHQ e o gerenciador de dados Flocker, e Timo Derstappen fazia coisas incríveis com a Giant Swarm. Empresas de grande porte estavam por toda parte, tentando entender o que estava acontecendo.

- Adrian Mouat, gerente de produto na Chainguard

Palco da palestra principal da DockerCon 18 Europe, com Jenny Burcio e Mano Marks entregando a Bret Fisher o prêmio “Top of the Captains Hat”. Bret está usando um quepe branco de capitão de barco.
Bret Fisher recebe o prêmio "Tip of the Captain's Hat" na DockerCon 18 Europe

Assisti à palestra de Solomon na PyCon 2013 e, em 2014, tentei usar o Docker para melhorar nossos testes de Node.js, mas não entendi. Ficava tentando colocar um servidor inteiro em uma imagem de contêiner (sem sucesso), e a rede era pura magia negra para mim. Era tanta novidade em automação e tantos conceitos novos que desisti e voltei seis meses depois. Dessa vez, entendi — e foi como levar uma trombada de trem. A combinação 1-2-3 de criar imagens, armazená-las em registros e executar contêineres a partir delas explodiu minha cabeça, e nunca mais olhei para trás.

- Bret Fisher, especialista em DevOps e criador do Docker Mastery

Os orquestradores

Se o anúncio do Docker na PyCon 2013 foi a faísca que acendeu o fogo, o surgimento das plataformas de orquestração de contêineres foi o vento que incendiou a floresta. Mesosphere, Rancher, Swarm, Nomad e Kubernetes foram os “aplicativos matadores” que realmente impulsionaram os contêineres. Já se escreveu muito sobre os prós e contras de cada plataforma, mas não dá para exagerar a importância que tiveram na adoção em massa dos contêineres.

Hoje, Kubernetes é a plataforma dominante, mas Swarm ainda conta com uma comunidade muito fiel, e Nomad também tem seus grupos de usuários. Mesos surgiu antes do Docker e, sem dúvida, ainda tem muitos usuários. Para algumas pessoas, Kubernetes parecia complexo demais, mas, como mostra sua participação no mercado, a maioria acabou adotando a plataforma.

Quando Kubernetes surgiu, eu odiei. Era mais uma camada de abstração que não trazia muitos benefícios adicionais... até que trouxe. Aí passei a adorar, porque podia pegar aqueles servidores, com suas VMs e seus contêineres, e transformá-los em um pequeno data center. O fato de haver um processo para cuidar daquilo 24 horas por dia, 7 dias por semana, me deixava livre para fazer outra coisa.

- Adrian Goins

Embora Kubernetes seja hoje o padrão de fato para implantar contêineres, é interessante acompanhar a evolução desse espaço e ver quantas camadas de abstração estão sendo criadas em torno dele.

Quando ficou claro que os orquestradores seriam essenciais para a adoção de contêineres em escala, achei que haveria espaço para várias plataformas importantes terem sucesso. Cada uma era boa à sua maneira, e eu via casos de uso ideais para todas. O que eu adorava no Swarm era poder pegar alguém que conhecesse comandos simples do docker run ou conseguisse montar um arquivo Docker Compose fácil de entender e colocar um serviço Swarm no ar em minutos. A simplicidade da CLI do Docker e de ferramentas como Docker Compose era brilhante: se alguém sabia executar contêineres em um único host usando qualquer uma delas, não era difícil dar o próximo passo e orquestrar contêineres. Hoje, o setor está trabalhando para abstrair Kubernetes dos desenvolvedores, porque ele tirava muito o foco do desenvolvimento e o colocava na orquestração. Quanto mais tempo os desenvolvedores dedicam à orquestração, menos atenção sobra para gerar valor para o negócio com os aplicativos em que estão trabalhando.

- Matt Bentley

Transformações na carreira e na vida

Um enorme (com mais de 1,5 m de comprimento) boneco de pelúcia azul do Moby, a Baleia, sentado em uma mesa de escritório vazia. Ao fundo, há uma faixa com a palavra “Whalecome” acima de um quadro de avisos vazio.
Moby, a baleia, no antigo escritório da Docker em SFO

Um ponto em comum entre todas as pessoas que procurei para este artigo foi como o projeto Docker e a comunidade que cresceu em torno dele transformaram a carreira — e até o sustento — de tantas pessoas.

Eu sabia que era a próxima evolução da infraestrutura. Fiquei obcecado e redirecionei toda a minha carreira para trabalhar exclusivamente com contêineres.

- Bret Fisher

A partir daquele dia, passei a direcionar toda a minha carreira para os contêineres… Até hoje, continuo empenhado em instruir e orientar o governo dos EUA na jornada de adoção de contêineres. É incrível ver uma tecnologia tão transformadora durar 10 anos.

- Andy Clemenko

Quanto mais eu aprendia, mais me fascinavam as possibilidades oferecidas pela conteinerização. Acabei começando a dar aulas de Docker e decidi mudar o rumo da minha carreira para trabalhar com contêineres e, depois, Kubernetes. Hoje, olhando para trás, posso dizer com segurança que o Docker mudou minha vida.

- Sevi Karakulak

A Snyk valoriza o código aberto

Celebramos uma década de trabalho transformador do projeto Docker, como mostram os depoimentos marcantes citados aqui e os milhões de desenvolvedores que, todos os dias, criam, distribuem e executam contêineres no mundo inteiro.

A Snyk foi fundada em 2015 com o objetivo de capacitar desenvolvedores a programar e usar software de código aberto com segurança — inclusive nos contêineres em que você os coloca. Como acreditamos profundamente no poder e na importância do modelo de desenvolvimento de código aberto, oferecemos gratuitamente nossas ferramentas de análise para desenvolvedores individuais desde o primeiro dia.

Comece a resolver desafios de capture the flag

Aprenda a resolver desafios de capture the flag assistindo sob demanda ao nosso workshop virtual introdutório.


Créditos

Agradecemos a todas as pessoas que contribuíram para este artigo!

Nirmal Mehta

Arquiteto de soluções especialista principal na AWS; Docker Captain desde 2016.
LinkedIn
@normalfaults
hachyderm.io/@nirmal

Brandon Mitchell

Arquiteto de soluções na BoxBoat, uma empresa IBM; Docker Captain desde 2018; mantenedor do OCI image-spec.
LinkedIn
@sudo_bmitch
@bmitch@fosstodon.org

Adrian Goins

Ex-defensor de desenvolvedores na Rancher/SUSE; criador de conteúdo e aviador; defensor de longa data da Rancher/SUSE.
LinkedIn
@creator_aviator

David Flanagan

Fundador da Rawkode Academy; criador da KubeHuddle Conference.
LinkedIn
@rawkode

Andy Clemenko

Engenheiro de campo na Rancher Government Solutions; ex-arquiteto de soluções e engenheiro de vendas do Docker.
LinkedIn
@clemenko
@clemenko@hachyderm.io

Rachel Leekin

Arquiteta especialista em soluções de contêineres na AWS.
LinkedIn
@Rachel_LeeKin

Matt Bentley

Gerente de engenharia de soluções na VMware.
LinkedIn
@matthewbentley
@mbentley@hachyderm.io

Adrian Mouat

Gerente de produto na Chainguard; Docker Captain desde 2016; autor de Using Docker (O'Reilly Media, 2016).
LinkedIn
@adrianmouat
@adrianmouat@hachyderm.io

Sevi Karakulak

Líder de engenharia na Container Solutions.
LinkedIn
@sevikarakulak