De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
A popularização dos containers modificou profundamente a forma como aplicações são desenvolvidas e distribuídas. Em vez de instalar bibliotecas, configurar servidores e resolver dependências manualmente, tornou-se possível empacotar uma aplicação completa juntamente com todos os componentes necessários para sua execução. O Docker desempenhou um papel fundamental nessa transformação e hoje faz parte da infraestrutura de desenvolvimento de empresas de todos os portes.
Embora a maior parte dos desenvolvedores concentre sua atenção nos arquivos Dockerfile, nas imagens e nos orquestradores, existe um componente que influencia diretamente o desempenho e o consumo de armazenamento: o sistema de arquivos utilizado pelo host.
Toda imagem Docker é construída em camadas. Cada instrução presente em um Dockerfile cria uma nova camada que poderá ser reutilizada por outras imagens. Quando dezenas ou centenas de containers utilizam uma mesma distribuição Linux como base, grande parte dos arquivos permanece idêntica. É justamente essa característica que torna o Docker tão eficiente.
O Btrfs foi projetado para trabalhar exatamente com esse tipo de cenário. Graças ao mecanismo de Copy-on-Write, ele consegue compartilhar blocos de dados entre diferentes subvolumes sem duplicar fisicamente seu conteúdo. Na prática, várias imagens podem utilizar exatamente os mesmos blocos de armazenamento até que alguma delas sofra uma modificação. Apenas nesse momento novos blocos são alocados, preservando a integridade das demais imagens. Esse comportamento reduz significativamente o espaço ocupado em disco.