{"id":16790968,"url":"https://github.com/rluders/containers4noobs","last_synced_at":"2025-04-10T23:32:27.824Z","repository":{"id":51445517,"uuid":"518761230","full_name":"rluders/containers4noobs","owner":"rluders","description":"Um guia/tutorial/cheatsheet que irá ajudar você começar a estudar e melhorar seus conhecimentos sobre containers.","archived":false,"fork":false,"pushed_at":"2023-10-03T14:13:00.000Z","size":284,"stargazers_count":15,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-24T20:21:26.796Z","etag":null,"topics":["4noobs","containers","docker","he4rt","he4rtdevs","k8s","kubernetes","openshift","roadmap","tutorials"],"latest_commit_sha":null,"homepage":"https://rluders.github.io/containers4noobs/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rluders.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["rluders"],"patreon":"rluders"}},"created_at":"2022-07-28T08:21:34.000Z","updated_at":"2025-02-09T19:14:46.000Z","dependencies_parsed_at":"2025-02-18T06:44:44.487Z","dependency_job_id":null,"html_url":"https://github.com/rluders/containers4noobs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rluders%2Fcontainers4noobs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rluders%2Fcontainers4noobs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rluders%2Fcontainers4noobs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rluders%2Fcontainers4noobs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rluders","download_url":"https://codeload.github.com/rluders/containers4noobs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248316687,"owners_count":21083491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["4noobs","containers","docker","he4rt","he4rtdevs","k8s","kubernetes","openshift","roadmap","tutorials"],"created_at":"2024-10-13T08:32:44.148Z","updated_at":"2025-04-10T23:32:27.799Z","avatar_url":"https://github.com/rluders.png","language":null,"funding_links":["https://github.com/sponsors/rluders","https://patreon.com/rluders"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"assets/header-4noobs.svg\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eContainers4Noobs\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"assets/containers.jpg\" /\u003e\n\u003c/p\u003e\n\n# Introdução\n\nEsse 4Noobs tem como objetivo ajudar quem quer começar a entender o conceito de containers, como utilizar, suas vantagens e ferramentas.\n\n\nAo longo do guia eu vou usar alguns ícones como informações extras, então, aqui está a legenda:\n\n- 👍 = Recomendado\n- 💰 = Pago\n\n# Requisitos\n\nPara trabalhar de forma eficiência com containers você vai precisar saber um pouco de Linux, existe um 4Noobs para isso aqui: [Linux4Noobs](https://github.com/lucashe4rt/linux4noobs)\n\nVocê 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.\n\nEu recomendaria no mínimo um i5 (ou equivalente) com pelo menos 8Gb de memória e uns 60Gb de espaço livre em disco.\n\n# Roadmap\n\n## Introdução\n\n### O que são containers?\n\nContainer é 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. \n\nDesta forma, isso também permite que esta aplicação seja facilmente movida de um contexto/servidor para outro, sem grandes problemas.\n\nExistem 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.\n\nCada 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.\n\n### VM ou Container?\n\nVale lembrar que, apesar de bastante similar as abordagens são completamente diferentes. Para entender melhor, observe o gráfico abaixo:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/vm-vs-containers.png\" alt=\"Graphic comparing VM and Container architecture\" /\u003e\n\u003c/p\u003e\n\nNo 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.\n\nEnquanto 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.\n\nDesta 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.\n\n\u003cdiv style=\"border: 1px solid #4b5c6b; padding: 12px 10px; background-color: #f4f4f4;\"\u003e\n  \u003cp style=\"margin-bottom: 8px; font-weight: bold;\"\u003e🔖 Leitura complementar\u003c/p\u003e\n  \u003cul\u003e\n    \u003cli\u003e🇺🇸 \u003ca href=\"https://www.ibm.com/cloud/blog/containers-vs-vms\"\u003eContainers vs. Virtual Machines (VMs): What’s the Difference?\u003c/a\u003e\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/div\u003e\n\n### Docker, LXC. Quais são as diferenças?\n\nÉ 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.  \n\nSe 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.\n\nAcho 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.\n\nPara 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`.\n\n\u003cdiv style=\"border: 1px solid #4b5c6b; padding: 12px 10px; background-color: #f4f4f4;\"\u003e\n  \u003cp style=\"margin-bottom: 8px; font-weight: bold;\"\u003e🔖 Leitura complementar\u003c/p\u003e\n  \u003cul\u003e\n    \u003cli\u003e🇺🇸 \u003ca href=\"https://earthly.dev/blog/lxc-vs-docker/\"\u003eLXC vs Docker: Which Container Platform Is Right for You?\u003c/a\u003e\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/div\u003e\n\n## Como instalar?\n\nTenha em mente que existem diversos concorrentes no mercado, para executar/gerenciar Containers, você pode encontrar [uma lista aqui](https://www.makeuseof.com/best-docker-alternatives/). A minha recomendação aqui fica para o uso do [Podman](https://podman.io/), pois considero ele mais leve e muito mais amigável para quem pretende migrar para Kubernetes.\n\nSeleciona abaixo o seu sistema operacional para ir para as instruções de instalação:\n\n- [Linux](/pages/install-linux.md)\n- [MacOS](/pages/install-macos.md)\n- [Windows](/pages/install-windows.md)\n\n## Usando containers\n\nNos 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.\n\n### Docker\n\n- [Usando Docker](./pages/using-docker.md)\n\n### Podman\n\n- [Usando Podman](./pages/using-podman.md)\n\n## Orquestrando containers\n\n### Kubernetes\n@TODO\n\n### Openshift\n@TODO\n\n### Docker Swarm\n@TODO\n\n# Recursos\n\n## Livros\n\n- 🇺🇸👍 [OpenShift for Developers, Second Edition](https://developers.redhat.com/e-books/openshift-for-developers)\n- 🇺🇸 [Containers Networking: From Docker to Kubernetes](https://www.nginx.com/resources/library/container-networking-docker-kubernetes/)\n- 🇧🇷👍 [Como criar aplicações modernas com containers Linux](https://www.redhat.com/pt-br/resources/building-modern-apps-with-containers-ebook)\n- 🇧🇷💰 [Containers com Docker: Do desenvolvimento à produção](https://www.amazon.com.br/Containers-com-Docker-desenvolvimento-produ%C3%A7%C3%A3o-ebook/dp/B019NJB50C)\n\n## Ferramentas\n\n- [Docker](https://www.docker.com/)\n- 👍 [Podman](https://podman.io/)\n\n## Cursos completos\n\n- 🇺🇸👍 [Kubernetes Crash Course for Absolute Beginners](https://www.youtube.com/watch?v=s_o8dwzRlu4)\n\n## Vídeos\n\n- 🇧🇷👍 [O mínimo que você precisa saber sobre Docker](https://www.youtube.com/watch?v=ntbpIfS44Gw)\n- 🇧🇷👍 [Containers, Docker e Kubernetes com Giovanni Bassi](https://www.youtube.com/watch?v=wxLvvMxzc1Q)\n- 🇧🇷 [Containers // Dicionário do Programador](https://www.youtube.com/watch?v=-pUZBovqRcU)\n- 🇧🇷 [Afinal, o que é um container?](https://www.treinaweb.com.br/blog/afinal-o-que-e-um-container)\n\n# Como contribuir\n\nContribuições fazem com que a comunidade opensource seja um lugar incrível para aprender, inspirar e criar. Todas contribuições são extremamente apreciadas.\n\n- Realize um Fork do projeto\n- Crie um branch com a nova feature: `git checkout -b feature/sua-feature`\n- Realize o Commit `git commit -m 'Adicionado conteudo brabo'`\n- Realize o Push na Branch: `git push origin feature/sua-feature`\n- Abra um Pull Request\n\nNão sabe usar Git? [Git4Noobs](https://github.com/DanielHe4rt/git4noobs)\n\n# Contribuidores\n\n\u003ca href=\"https://github.com/rluders/containers4noobs/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=rluders/containers4noobs\"/\u003e\n\u003c/a\u003e\n\n\u003cbr/\u003e\u003cbr/\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/he4rt/4noobs\" target=\"_blank\"\u003e\n    \u003cimg src=\"assets/footer-4noobs.svg\" width=\"380\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frluders%2Fcontainers4noobs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frluders%2Fcontainers4noobs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frluders%2Fcontainers4noobs/lists"}