Explorando Docker!

Updated: at 08:32

O que é?

É uma solução altamente flexível para o desenvolvimento, entrega e execução de aplicações. Com Docker, você pode criar, implantar e gerenciar suas aplicações de forma eficiente e escalável.

Docker Client (CLI)

É a camada de interação dos usuários, onde são executados dos comandos. Através dele que é possível de comunicar com o dockerd, vulgo Docker Daemon.

Docker Daemon

Escuta o Docker Client, através de requisições de API e gerencia os objetos do Docker, como imagens, containers, networks e volumes.

Registry

Repositório de imagens docker.

📦Containers

É uma instância de uma imagem Docker. Pode criar, iniciar, parar, mover, ou deletar o container usando o Docker CLI.

🛠️Comandos

Parâmetros

-d: Irá executar em modo daemon, o terminal não irá ficar preso, não irá rodar em primeiro plano. -it: Interatividade ficará conectado no bash, caso seja o entrypoint do Dockerfile da imagem. -v: Irá conectar um volume ao container, exemplo: -v my_volume:/path/in/container. -m: Irá definir a quantidade memória para o container: docker run -d -m 128M nginx -cups: Irá definir a quantidade de CORES: docker run -d --cpus 0.5 nginx

🌐Network

É a forma como containers se comunicam entre si, possibilitando troca de dados.

Tipos

📂Volumes

Os volumes são utilizados para compartilhar arquivos e diretórios entre containers.

Bind

Quando é feito a vinculação de um diretório para um volume.

Casos de Uso Práticos dos Volumes:

Comandos
Parâmetros

📋Dockerfile

Manual de instruções para criação de uma imagem do container.

Benefícios:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
COPY index.html /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Cria uma imagem com o Nginx instalado e configurado para servir um arquivo HTML na porta 80.

Muilti-stage

FROM golang AS build

WORKDIR /app
ADD . /app
RUN go build -o main

FROM alpine
WORKDIR /app-alpine
COPY --from=build /app/main /app-alpine

ENTRYPOINT ./main

É usado para que a imagem tenha um tamanho reduzido, no próximo FROM é que será utilizado para executar o código do build.

Parâmetros

-t: Nome da imagem + a versão, a tag. docker build -t app-saulo:1.0.0 .

COPY: Irá copiar arquivos do diretório do Dockerfile e irá colocar para dentro da imagem.

ADD: Mesma função do COPY, porém mais completo. Ele pode: adicionar o conteúdo de um tar e adicionar através de link.

CMD: Comando que será executado quando o container subir, através do docker run. Porém, o mesmo pode ser sobrescrito com docker run <image> ls, e, com isso, irá executar o ls.

ENTRYPOINT: Comando que será executado quando o container subir, mas que pode ter argumentos adicionados no docker run.

Desenvolvimento

Para fins de estudo, use o comando abaixo para executar um docker dentro de um docker (docker-in-docker).

docker run --privileged --name my-docker -d docker
docker exec -it my-docker /bin/sh