Fundamentos do Docker
O que é o Docker?
O Docker é uma plataforma de código aberto que permite aos desenvolvedores construir, implantar e executar aplicações em contêineres. Os contêineres são pacotes de software leves, autônomos e executáveis que incluem tudo o que é necessário para executar uma aplicação, incluindo o código, o tempo de execução, as ferramentas do sistema e as bibliotecas. O Docker fornece uma forma consistente e confiável de empacotar e distribuir aplicações, facilitando o desenvolvimento, teste e implantação de software.
Arquitetura do Docker
O Docker utiliza uma arquitetura cliente-servidor, onde o cliente Docker se comunica com o daemon Docker, que é responsável por construir, executar e gerenciar contêineres Docker. O daemon Docker roda na máquina hospedeira, enquanto o cliente Docker pode rodar na mesma máquina ou em uma máquina remota.
graph LR
A[Cliente Docker] -- API --> B[Daemon Docker]
B -- Executa Comandos --> C[Imagens Docker]
B -- Gerencia --> D[Contêineres Docker]
Imagens Docker
Imagens Docker são os blocos de construção dos contêineres. São modelos somente leitura que contêm o código da aplicação, o tempo de execução, as ferramentas do sistema e as bibliotecas necessárias para executar a aplicação. As imagens Docker são criadas usando um Dockerfile, que é um arquivo de texto que contém instruções para a construção da imagem.
## Dockerfile
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Contêineres Docker
Contêineres Docker são instâncias de imagens Docker. São ambientes leves, portáteis e autocontidos que executam aplicações. Os contêineres são isolados do sistema hospedeiro e uns dos outros, garantindo um comportamento consistente e confiável da aplicação.
## Executar um contêiner
docker run -d -p 80:80 my-nginx-app
Rede Docker
O Docker fornece recursos de rede embutidos que permitem que os contêineres se comuniquem entre si e com o sistema hospedeiro. O Docker suporta vários drivers de rede, incluindo redes bridge, host e overlay.
## Criar uma rede bridge
docker network create my-network
## Executar um contêiner na rede
docker run -d --network my-network my-app
Volumes Docker
Volumes Docker são usados para persistir dados gerados por um contêiner. Os volumes podem ser usados para armazenar dados da aplicação, arquivos de configuração e outras informações persistentes. Os volumes podem ser montados no sistema de arquivos hospedeiro ou em outros contêineres.
## Criar um volume
docker volume create my-data
## Executar um contêiner com um volume
docker run -d -v my-data:/app my-app