Conteinerização e Virtualização [Study Notes🧠]

Bem Vindo! | Welcome!
By Felipe Lamounier, Minas Gerais, Brasil🇧🇷 – powered by 🙂My Easy B.I.


📑 Table of Contents:

  1. Introdução a Virtualização
  2. Introdução a Conteinerização
    1. Virtualização e Conteinerização
    2. Key Differences Between VMs and Containers
    3. Diferença Docker vs Kubernets
    4. Containerization with Docker
  3. Container orchestration
    1. Container orchestration with Kubernetes
    2. Reading Dockerfiles and running containers

Esta é uma memória de estudo sobre Conceitos de Conteinerização e Virtualização

A virtualização e a conteinerização transformaram a forma como aplicações são desenvolvidas, implantadas e escaladas no mundo moderno da computação em nuvem. Neste artigo, você vai entender os conceitos fundamentais dessas tecnologias, as diferenças entre máquinas virtuais e containers, e como ferramentas como Docker e Kubernetes desempenham papéis cruciais na criação e orquestração de ambientes eficientes, portáteis e seguros. Ideal para quem está começando ou deseja consolidar seu conhecimento, este conteúdo apresenta de forma clara os principais componentes, comandos e benefícios dessas soluções.


Introdução a Virtualização

Limitações de máquinas físicas:

  • Custo
  • Manutenção e downtime
  • Difícil de escalar

Máquina Virtual (Virtual Machines)

  • Um computador simulado dentro de outro computador
  • Otimização de recursos
  • Isolado e seguro

Introdução a Conteinerização

Inglês:
Introducing containers; OS-level virtualization = containerization; Isolated user spaces = containers; Containers; Isolated environment; Includes application and all dependencies; Application Dependencies; Application; Application Settings; CONTAINER

Português (tradução):
Introduzindo contêineres; Virtualização em nível de sistema operacional = conteinerização; Espaços de usuário isolados = contêineres; Contêineres; Ambiente isolado; Inclui o aplicativo e todas as dependências; Dependências da Aplicação; Aplicação; Configurações da Aplicação; CONTÊINER
  • Virtualização no nível de OS (sistema operacional)
  • Empacota uma aplicação e suas dependências em um container

Benefícios:

  • Isolado entre aplicações
  • Portabilidade e reprodutibilidade
  • Tempo rápido de início(carregamento)

Virtualização e Conteinerização

Inglês:
Recap: Virtualization vs. containerization;
Virtualization;
• Creates a virtual version of a computing resource;
• Full virtualization;
• VM: Simulated computer system inside another computer;
Containerization;
• Packages application and dependencies into isolated environment;
• OS-level virtualization;
• Container: Isolated application environment;

Português (tradução):
Resumo: Virtualização vs. conteinerização;
Virtualização;
• Cria uma versão virtual de um recurso computacional;
• Virtualização completa;
• VM: Sistema de computador simulado dentro de outro computador;
Conteinerização;
• Empacota aplicação e dependências em um ambiente isolado;
• Virtualização em nível de sistema operacional;
• Contêiner: Ambiente de aplicação isolado;

Key Differences Between VMs and Containers

AspectVirtual MachinesContainers
IsolationFull OS-level isolation (including the kernel)OS-level virtualization, sharing the kernel
PortabilityLess portable, depends on the hypervisorHighly portable, runs anywhere Docker is supported
Resource UsageHeavy on CPU and memoryLightweight, uses fewer resources

Diferença Docker vs Kubernets

o Docker é uma ferramenta para criar e executar contêineres, enquanto o Kubernetes é uma plataforma para orquestrar e gerenciar esses contêineres em escala, especialmente em ambientes de produção. O Docker é como um “motor” que cria os contêineres, e o Kubernetes é como um “sistema de gerenciamento” que cuida desses motores e de como eles funcionam juntos. 

Docker:

  • Foco: Criação e execução de contêineres individuais.
  • Responsabilidades: Empacotamento de aplicações e suas dependências em contêineres leves e portáteis. 
  • Exemplos de uso: Desenvolvimento local, testes de aplicações, ambientes de CI/CD. 
  • Não é uma ferramenta de orquestração: O Docker, por si só, não gerencia a comunicação entre múltiplos contêineres ou a escalabilidade em larga escala. 

Kubernetes:

  • Foco: Orquestração de contêineres em larga escala.
  • Responsabilidades:Gerenciamento de clusters de contêineres, escalonamento automático, balanceamento de carga, alta disponibilidade, entre outros. 
  • Exemplos de uso:Gerenciamento de ambientes de produção, aplicações complexas que precisam de alta disponibilidade e escalabilidade. 
  • Complementar ao Docker:O Kubernetes pode usar o Docker (ou outros runtimes de contêiner) para executar os contêineres que ele gerencia. 

Em resumo:

  • Docker: Cria e empacota suas aplicações em contêineres.
  • Kubernetes: Gerencia e orquestra esses contêineres em ambientes de produção. 

Relação entre eles:

Embora sejam tecnologias diferentes, Docker e Kubernetes são frequentemente usados juntos. O Docker fornece a base para a conteinerização, e o Kubernetes a plataforma para gerenciá-los em escala. Por exemplo, você pode usar o Docker para criar imagens de contêiner e o Kubernetes para implantar e gerenciar essas imagens em um cluster de servidores. 


Containerization with Docker

managing the lifecycle of containers
gerenciando o ciclo de vida dos conteiners

Overview componentes Docker

  • Docker Desktop
  • Docker Engine
    • Docker Client
    • Docker Daemon
  • Docker Objects
    • Docker Images
    • Docker Containers
  • Docer Registries
Docker Architecture;
Client;
GUI;
CLI;
Docker actions;
Server;
Docker Daemon;
manages;
Images;
Containers;
Dockerfile → build → Docker Image → run → Docker Container
Docker Architecture;
Client;
GUI;
CLI;
Docker actions;
Server;
Docker Daemon;
manages;
Images;
Containers;
Dockerfile → build → Docker Image → run → Docker Container

Container orchestration

Orquestração: Gerenciamento automatizado de múltiplos componentes

Orquestrador: A ferramenta usada para orquestração

Container Orchestration: Orquestração de containers

Inglês:
Declarative programming in container orchestration;
Declarative programming:;
• Defining the desired output instead of describing the steps to reach it;
Config file → Orchestrator → Setup

Português (tradução):
Programação declarativa na orquestração de contêineres;
Programação declarativa:;
• Definir o resultado desejado em vez de descrever os passos para alcançá-lo;
Arquivo de configuração → Orquestrador → Configuração (Setu
Benefits of container orchestration; Easy scaling of containers; Horizontal scaling: Adding/Removing containers; Vertical scaling: In-/Decreasing computing resources of specific containers; Automation of operations; Time savings; Improved developer productivity; Cost savings; Better performance of application

Português (tradução):
Benefícios da orquestração de contêineres; Escalonamento fácil de contêineres; Escalonamento horizontal: Adição/remoção de contêineres; Escalonamento vertical: Aumento/redução de recursos computacionais de contêineres específicos; Automação de operações; Economia de tempo; Maior produtividade dos desenvolvedores; Redução de custos; Melhor desempenho da aplicação

Container orchestration with Kubernetes

Introdução Kubernets:

  • Abreviação: K8
  • Desenvolvido pelo Google, virou open source em 2014
Overview of Kubernetes components; Most important Kubernetes components:; Pods; Nodes; Control Plane; Cluster

Português (tradução):
Visão geral dos componentes do Kubernetes; Componentes mais importantes do Kubernetes:; Pods; Nós (Nodes); Plano de Controle (Control Plane); Cluster
  • Pods são as smallest deployable unit
  • Nodes são as smallest hardware unit
  • Control Plane gerencia nõs e pods e garante eficiência
  • Cluster é o agrupamento de nós

Reading Dockerfiles and running containers

Sequential order in Dockerfiles; Execution in sequential order; Start of a Dockerfile:; Metadata; Comments; Arguments; FROM instruction

Português (tradução):
Ordem sequencial em Dockerfiles; Execução em ordem sequencial; Início de um Dockerfile:; Metadados; Comentários; Argumentos; Instrução FROM
Overview of Docker instructions; Important Docker instructions; FROM; COPY; RUN; ENTRYPOINT

Português (tradução):
Visão geral das instruções Docker; Instruções importantes do Docker; FROM; COPY; RUN; ENTRYPOINT
ENTRYPOINT instruction; Defines the container's default behavior; Specifies command to run at initiation; The primary purpose of the container;
Syntax: ENTRYPOINT ["command", "argument"];
Example: # Run the script when the container starts; ENTRYPOINT ["python", "hello_world.py"]
Define the image on which to build; FROM python:3.10;
Copy files/folders to the main folder of the container; COPY . .;
Install the application's dependencies; RUN pip install -r requirements.txt;
Run the script when the container starts; ENTRYPOINT ["python", "hello_world.py"]

Keywords: Entendendo Virtualização e Conteinerização; Diferenças Chave: Docker vs Kubernetes; Como Funciona a Orquestração de Contêineres; Kubernets; Virtualização vs Conteinerização; Diferenças entre Docker e Kubernetes; O que é Container Orchestration; Como funciona o Dockerfile; Comandos Docker essenciais; Kubernetes para iniciantes; Introdução à conteinerização com Docker; Benefícios da orquestração de contêineres; Execução de containers com docker run; Construção de imagens com docker build


Junte-se a 970 outros assinantes

Deixe um comentário