Esse 4Noobs tem como objetivo ajudar quem quer começar a entender o conceito de containers, como utilizar, suas vantagens e ferramentas.
Ao longo do guia eu vou usar alguns ícones como informações extras, então, aqui está a legenda:
Para trabalhar de forma eficiência com containers você vai precisar saber um pouco de Linux, existe um 4Noobs para isso aqui: Linux4Noobs
Você também vai precisar saber instalar aplicações no seu computador (seja, Linux, Windows ou Mac). E isso nos leva ao próximo requisito, você vai precisar de um computador.
Eu recomendaria no mínimo um i5 (ou equivalente) com pelo menos 8Gb de memória e uns 60Gb de espaço livre em disco.
Container é uma tecnologia para criar um ambiente isolado para rodar serviços. Tentando ser o mais claro possível: é como se você tivesse distribuíndo junto com a sua aplicação/serviço todo o sistema configurado, necessário para que a aplicação seja executada sem muitos problemas.
Desta forma, isso também permite que esta aplicação seja facilmente movida de um contexto/servidor para outro, sem grandes problemas.
Existem algumas pessoas que costumam chamar containers de Docker, e isso é equivocado, um container é um processo, enquanto o Docker é um serviço de container. Existem vários outros serviços para rodar containers, Docker é apenas um dos mais conhecidos.
Cada container deve ter apenas uma responsabilidade, ou seja, executar apenas uma aplicação/serviço. Desta forma você consegue isolar ambientes e processos, garantido que não haja conflito entre dependências ou até mesmo mapeamento de portas, etc.
Vale lembrar que, apesar de bastante similar as abordagens são completamente diferentes. Para entender melhor, observe o gráfico abaixo:
No gráfico, é possível compreender de uma forma simplificada a diferença entre as arquiteturas. Enquanto uma VM possuí um sistema operacional convidado (Guess OS) separado para rodar a aplicação, a arquitetura de Containers elimina essa necessidade mas mantendo o isolamento da aplicação.
Enquanto uma VM emula (virtualiza) um computador com acesso a recursos de hardware e roda em cima do Hypervisor, um Container tenta apenas conter a aplicação e suas dependências, compartilhando a maioria das outras coisas com o sistema operacional hospedeiro.
Desta forma é fácil dizer que obrigatoriamente, uma VM é muito mais ‘pesada’ que um Container. Inclusive, dado ao design da VM é possível rodar Containers dentro dela, e isso é uma prática bastante comum para isolar ambientes, inclusive é o que normalmente acontece em muitos serviços de cloud.
🔖 Leitura complementar
É bastante comum as pessoas se referirem a Docker como sinônimo de Containers, entretanto, é importante saber que Docker é apenas um dos tipos, ou engine, para execução de Containers. Inclusive ela nem foi a primeira tecnologia para essa finalidade.
Se eu for entrar em detalhes miúdos sobre as diferenças entre Docker e LXC nós vamos ter que nos aprofundar bastante em alguns termos e conceitos que eu não sei se todos vocês estão familiarizados, sendo assim, vou tentar fazer uma abordagem bem simplificada sobre o assunto.
Acho que a primeira coisa que vocês devem estar se perguntando é: O que é LXC? E essa é uma pergunta bem simples de se responder, e eu vou primeiro repetir algo que eu disse lá em cima “Containers são Linux”. Dito isso, LXC literalmente significa “Linux Containers”. LXC possuem um design muito mais flexível que containers Docker, e muito mais próximos de uma VM, isso quer dizer que, você pode praticamente instalar qualquer coisa neles. Você pode considerar o LXC como a primeira implementação de containers.
Para você ter uma ideia, o próprio Docker, originalmente começou como um fork do LXC. Porém seguiu uma abordagem de design um pouco diferente, tendo seu foco na execução de microserviços, e substituindo eventualmente o LXC pela sua implementação própria chamada de libcontainer
.
🔖 Leitura complementar
Tenha em mente que existem diversos concorrentes no mercado, para executar/gerenciar Containers, você pode encontrar uma lista aqui. A minha recomendação aqui fica para o uso do Podman, pois considero ele mais leve e muito mais amigável para quem pretende migrar para Kubernetes.
Seleciona abaixo o seu sistema operacional para ir para as instruções de instalação:
Nos exemplos abaixo vamos usar os dois containers runtime mais utilizados do mercado para exemplificar os seus comandos. O mais bacana aqui é notar a pequena diferença entre eles na sua sintaxe, o que torna simples para usuários do Docker migrarem para o uso do Podman.
@TODO
@TODO
@TODO
Contribuições fazem com que a comunidade opensource seja um lugar incrível para aprender, inspirar e criar. Todas contribuições são extremamente apreciadas.
git checkout -b feature/sua-feature
git commit -m 'Adicionado conteudo brabo'
git push origin feature/sua-feature
Não sabe usar Git? Git4Noobs