/curso-docker-devs

Curso de Docker para Desenvolvedores (com Docker Swarm e Kubernetes) promovido pelo Matheus Battisti na plataforma Udemy.

Primary LanguageHTML

Docker para Desenvolvedores (com Docker Swarm e Kubernetes)

GitHub Workflow Status GitHub package.json version (subfolder of monorepo)

Curso Docker para Desenvolvedores (com Docker Swarm e Kubernetes) criado pelo Matheus Battisti, na plataforma Udemy. 2023

Comandos utilizados ao longo do projeto.

Seção 1 - Introdução

  1. Instalação do Docker Desktop.
  2. Verificar versão instalada:
docker version
  1. Para rodar containers utilize:
docker run

Seção 2 - Trabalhando com Containers

  1. Executar uma imagem em um container:
docker run <imagem>
  1. Verificar containers criado:
docker ps
  1. Parar um container:
docker stop <id ou nome>
  1. Remover um container:
docker -rm <id> -f (force)
  1. Iniciar um container:
docker start <id ou nome>
  1. Definir nome para um container:
docker run -d -p 80:80 --name <nome_desejado> nginx (apenas exemplo)
  1. Acessar logs de um container:
docker logs <id>

Seção 3 - Criando imagens e avançando em Containers

  1. Fazer o build de uma imagem:
docker build <diretório da imagem>
  1. Executar uma imagem:
docker run <imagem>
  1. Verificar opções diponíveis de comandos:
docker run --help
  1. Nomeando imagens:
docker tag <name>
docker tag <name>:<tag>
  1. Removendo imagens:
docker rmi <imagem> -f (force)
  1. Enviando imagens para o Hub:
docker push <imagem>

Seção 4 - Introduzindo volumes aos nossos containers

  1. Criar volumes nomeados:
docker run -v nomedovolume:/data
  1. Verificar volumes nomeados criados:
docker volume ls
  1. Bind mount:
docker run /dir/data:/data
  1. Inspecionar Volumes:
docker volume inspect <nome>
  1. Removendo Volumes:
docker volume rm <nome>
  1. Removendo Volumes em massa (prune), serve também para imagens e containers:
docker volume prune
  1. Volume com permissão apenas de leitura:
docker run -v volume:/data:ro

Seção 5 - Conectando containers com Networks

  1. Listando networks:
docker network ls
  1. Criando networks:
docker network create <nome>
  1. Removendo networks:
docker network rm <nome>
  1. networks externos:
docker run -d -p 5000:5000 --name <nomecontainer> --rm <name>
  1. networks maquina host:
docker run -d -p 5000:5000 --name <nomecontainer> --rm <namehost>
  1. conexao entre containers:
docker network create <nome>
docker run -d -p 3306:3306 --name <nomedocontainer> --rm --network <nomedared> -e <variaveldeambiente> = True <nomedaimagemderede>
  1. conexao entre um container e uma rede:
docker network connect <rede> <container>
  1. Desconectar um container da rede:
docker network disconnect <rede> <container>
  1. Inspecionando networks:
docker network inspect <nomedarede>

Seção 7 - Gerenciando múltiplos containers com Docker Compose

  1. Rodando o Compose:
docker-compose up
  1. Rodando o Compose em background:
docker-compose up -d
  1. Parando o Compose:
docker-compose down
  1. Verificando serviços do Compose:
docker-compose ps

Seção 8 - Docker Swarm para orquestração

  1. Inicializando o Swarm
docker swarm init
  1. Listando todos os Nodes
docker node ls
  1. Adicionando máquinas no Swarm
docker swarm join --token <TOKEN><IP>:<PORTA>
  1. Subindo serviço no Swarm
docker service create --name <nome> <imagem>
  1. Verificando serviços rodando no Swarm
docker service ls
  1. Removendo serviços
docker service rm <nome>
  1. Replicando serviços
docker service create --name <nome> --replicas <NUMERO> </NUMERO><imagem>
  1. Deixar o Swarm em um Node
docker swarm leave
  1. Removendo um Node
docker node rm <ID>
  1. Inspecionando serviços
docker service inspect <ID>
  1. Verificar quais containers estão rodando
docker service ps <ID>
  1. Atualizando um imagem no Swarm
docker service update --image <imagem> <SERVICO>
  1. Criando redes para serviços do Swarm
docker network create --network <REDE>
  1. Conectando serviços a uma rede já existente
docker service update --network <REDE> <nome>

Seção 9 - Orquestração com Kubernetes

  1. Inicializando o Minikube
minikube start --driver=<DRIVER>
  1. Parando o Minikube
minikube stop --driver=<DRIVER>
  1. Acessando o Dashboard
minikube dashboard OU minikube dashboard --url
  1. Criando Deployment
kubectl create deployment <NOME> --image=<IMAGE>
  1. Verificando Deployment
kubectl get deployments ou kubectl describe deployments
  1. Criando um service
kubectl expose deployment <NOME> --type=<TIPO> --port=<PORT>
  1. Gerando um IP para o Service
minikube service <NOME>
  1. Detalhes dos Services
kubectl get services
  1. Replicando aplicação
kubectl scale deployment/<NOME> --replicas=<NUMERO>
  1. Verificando número de réplicas
kubectl get rs
  1. Diminuindo o número de réplicas
kubectl scale deployment/<NOME> --replicas=<NUMERO_MENOR>
  1. Atualizando a imagem do projeto
kubectl set image deployment/<NOME> <NOME_CONTAINER>=<NOVA_IMAGEM>
  1. Desfazer alterações de Projeto
kubectl rollout status deployment/<NOME>
  1. Deletando Services
minikube delete service <NOME>
  1. Deletando Deployments
minikube delete deployment <NOME>
  1. Parando o deployment
minikube delete -f <ARQUIVO>
  1. Iniciando o Serviço
minikube apply -f <ARQUIVO>
minikube service <NOME>
  1. Parando o Serviço
minikube delete -f <ARQUIVO>