Comandos docker

Cria e executa um container a partir de uma imagem

docker run

PARAMETRÔS:

-it (iterativo - usa o terminal como novo) -d (detached - backgrount) -p 80:80 (porta em que estará na maquina, com porta do container) --name(nomear container) nome da imagem

v- nome_volume:diretorio (criar volume) * diretorio precisar ser compativel com WORKDIR OBS.*: usar a maquina como volume com bind mount -v diretorio que eu quero salvar:diretorio que é salvo no docker e ele ainda servirá para atualizar todo o projeto caso passe diretorio_projeto:WORKDIR_do_Dockerfile

--rm (apagar o container após execução) [nome_imagem]

Criar imagens a partir do Dockerfile

docker build

###PARAMETRÔS -t name Endereço do Dockerfile

Verificar containers

docker ps -a

Verificar imagens

docker images

Verificar volumes

docker volumes ls

Verificar networks

docker network ls

Criar network

docker network create [nome]

(driver default: bridge)

PARAMETRÔS

-d [driver]

OBS.* no network host geralmente é preciso criar no código Ex.: após criar a image e network docker run -d -p [3306]:3306 --name container_mysql_flask --network flasknetwork -e MYSQL_ALLOW_EMPTY_PASSWORD=True mysqlbridge

na conexão entre container nem é preciso externalizar portas

Conectar container a uma network

docker network connect [nome_network] [container(name OR id)]

Desconectar container a uma network

docker network disconnect [nome_network] [container(name OR id)]

Criação de variaveis de ambiente:

-e nome_variavel=valor quando for rodar o docker run pelo terminal

Criar varios container com compose

docker compose up

PARAMETRÔS:

-d (detached - backgrount)

Verificar containers do compose rodando

docker compose ps

Iniciar docker swarm

docker swarm init

join docker swarm

docker swarm join --token [TOKEN] [IP]:2377

Get token

docker swarm join-token manager

Criar serviços no swarm

docker service create [IMAGE]

PARAMETRÔS:

--name [ NAME ] --replicas [ QUANTIDADE ] -p [portas local : docker] --network [NOME DA REDE] usada para isolar certos container dentro da orquestração, e o driver de rede do swarm é o overlay

Node sair do Swarm

docker swarm leave

Remover Node

docker node rm [ID]

caso ainda eseja rodando um serviço basta usar o -f

Inspecionar services

docker service inspect [ID]

Verificar container que estão num serviço

docker service ps [ID]

Criar swarm junto do arquivo compose

docker stack deploy -c docker-compose.yaml [NAME]

Escalar container já conectados ao meu orquestrador

docker service scale [NAME_SERVICE]=[número]

Para de receber TASK do node manager

docker node update --availability drain [ID]

status drain para de receber pode retornar para active que é o padrão

Atulaizar a imagem de um serviço

docker service update --image [IMAGE] [IDSERVICE]

Atulaizar a rede de um serviço

docker service update --network-add [REDE] [IDSERVICE]

Atulaizar a rede de um serviço

docker service update --network-add [REDE] [IDSERVICE]

No Kube existe o deployment que seria o meu serviço e os pods que são como computadores que hospedam containers, o meu serviço pode ser externalizado usando o minikube e caso algum pod caia, outro pod de replica substitui seu lugar para a aplicação continuar no ar

AO INSTALAR O 'MINIKUBE' ELE BUSCA TAMBÉM O KUBERNETS E JÁ ASSOCIA

Iniciando minikube com docker:

minikube start --driver=docker

Criar deployment no Kube

kubectl create deployment [NAME-DEPLOY] --image=[NOME_IMAGE] 

Checando deployments

kubectl get deployment OU
kubectl describe deployment

Checando pods

kubectl get pods OU
kubectl describe pods

Configurações do Kube

kubectl config view

Criar service no Kube

kubectl expose deployment [NAME-DEPLOY] --type=[TIPO] --port=[PORTA]

Expor service no minikube

minikube service [NAME-DEPLOY]

Checando services

kubectl get services OU
kubectl describe services/[NAME-DEPLOY]

Replicar aplicação

kubectl scale deployment/[NAME-DEPLOY] --replicas=[NÚMERO]

Checando replicas

kubectl get rs

Atualizar imagem pelo pod manager

kubectl set image deployment/[NAME-DEPLOY] [NAME-CONTAINER]=[NEW-NAME-IMAGE]

Checar alteração no deploy

kubectl rollout status deployment/[NAME-DEPLOY]

Desfazer alteração

kubectl rollout undo deployment/[NAME-DEPLOY]

Deletar service do Kube

kubectl delete service [NAME-DEPLOY]

Deletar deployment do Kube

kubectl delete deployment [NAME-DEPLOY]

Criar Deployment por arquivo yaml

kubectl apply -f [NAME-ARQUIVO]

Usando kubernets com docker-desktop

Instale através da interface

E logo já poderá usar os proprios comandos do kubectl

Para iniciar o dashboard você precisa executar o seu deploy

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

Executa o servidor e acessa a url para visulizar o dahsboard

kubectl proxy

Para acessar o dashboard você precisa se autenticar e para isso deve criar dois services, já ter subido o servidor proxy

Um ServiceAccount com o tipo de usuario e outro ClusterRoleBinding fazendo uma ponte entre o serviço de usuario criado antes e o cluster

Criar token para logar

kubectl -n kubernetes-dashboard create token admin-user

Endereço do dashboard

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/