O projeto Docker completa 10 anos! Relembre uma década de contêineres
17 de março de 2023
0 minutos de leituraEm 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!

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”.

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

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

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.

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.

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

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.

… 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.

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.

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.

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

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 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. | Brandon Mitchell Arquiteto de soluções na BoxBoat, uma empresa IBM; Docker Captain desde 2018; mantenedor do OCI image-spec. |
Adrian Goins Ex-defensor de desenvolvedores na Rancher/SUSE; criador de conteúdo e aviador; defensor de longa data da Rancher/SUSE. | David Flanagan Fundador da Rawkode Academy; criador da KubeHuddle Conference. |
Andy Clemenko Engenheiro de campo na Rancher Government Solutions; ex-arquiteto de soluções e engenheiro de vendas do Docker. | Rachel Leekin Arquiteta especialista em soluções de contêineres na AWS. |
Matt Bentley Gerente de engenharia de soluções na VMware. | Adrian Mouat Gerente de produto na Chainguard; Docker Captain desde 2016; autor de Using Docker (O'Reilly Media, 2016). |
Sevi Karakulak Líder de engenharia na Container Solutions. |
