--- tags: intro,container --- # Introdução para Containers ## Dúvidas no inicio ... Uma guia para ajudar a responder perguntas frequentes no inicio de aprendizado de containers. - O que é um container? tecnologia que permite isolar processos reusando o sistema operativo linux (cpu, memoria, networking, etc). > O sistema operativo linux tem funcionalidades que permitem criar os containers: cgroups, namespaces. > Base de containers: cgroups (limites de recursos: cpu, memory) + namespaces (processos isolados em um novo namespace). O cgroups e namespaces sao funcionalidades do Kernel de Linux desde 2008. - Qual é a diferença entre VM e container? A VM e container permitem criar processos isolados do sistema operativo, mas usando tecnologias diferentes. O VM usa a tecnologia de virtualização (type 1 - Hypervisor - full virtualization), a virtualização é ao nivel de hardware, e consume mais recursos de CPU e memoria porque precisa dos requerimentos minimos do sistema operativo a virtualizar, por exemplo os requerimentos minimos de criar um windows, sacrifica mais recursos. No caso de containers ele são criados usando o mesmo kernel de linux, é ao nivel do sistema operativo, usa as funcionalidades do kernel para conseguir criar os containers. > - [Containers vs VMs: What's the difference? by IBM](https://youtu.be/cjXI-yxqGTI) > - VM is isolation of machines, while Containers is isolation of processes > Portability and Flexibility > Type 2 Virtualization: VMWare, home use cases (VM, Kubevirt). - Containers é o mesmo que Docker ? Containers é a definição, Docker é a empresa que crio um produto usando a tecnologia de containers, temos outras empresas além do docker. https://docs.docker.com/get-docker/ https://podman.io/ - O que é kubernetes? Kubernetes é um orquestrador, um dos mais usado. Tem outros orquestradores como: Docker Swarm, Apache Mesos, ECS da aws, Azure Container Service, etc. > - [Kubernetes Concepts Explained in 9 Minutes! by KodeKloud](https://youtu.be/QJ4fODH6DXI) - O que é ECS ? - O que é Fargate? - O que é EKS, AKS, GKE? - O que é um register de containers? ACR, ECR, jfrog, etc? - O que é o docker hub? https://hub.docker.com/ https://medium.com/codex/push-docker-image-to-docker-hub-acc978c76ad ## Hello world container Ambiente online interagir com docker: https://www.katacoda.com/courses/docker/deploying-first-container > - [Docker Tutorial for Beginners - A Full DevOps Course on How to Run Applications in Containers](https://youtu.be/fqMOX6JJhGo) ## Networking em containers ## Volume em containers ## Segurança em containers https://github.com/krol3/container-security-checklist ## Mais terminologia de containers - OCI runtime, specification - CRI - Container Runtime Interface: gVisor, kata containers, crio-o, runc, containerd. - CNI - Container Network Interface: flannel, cilium, vmware NSX, weave net, calico, Open vSwitch - CSI - Container Storage Interface: rook, ceph, openEbs - SMI - Service Mesh Interface: IStio, Hashicorp Consul, Linkerd, Open Service Mesh. - CPI - Cloud Provider Interface: vmWare, aws, Azure, Google cloud --- ## Material profundar nos conceitos - https://www.redhat.com/en/topics/containers - https://www.aquasec.com/cloud-native-academy/docker-container/ ## Books [Container Security by Liz Rice](https://containersecurity.tech/)