iniciando rápido com Docker [BR]
![iniciando rápido com Docker [BR]](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1634415965581%2Fx8V0T2pYp.png&w=3840&q=75)
Search for a command to run...
![iniciando rápido com Docker [BR]](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1634415965581%2Fx8V0T2pYp.png&w=3840&q=75)
No comments yet. Be the first to comment.
Imagine que você está em um cenário onde tem várias funções que precisam ser executadas conforme um caminho seja passado por parâmetro, por exemplo: dentro de um domínio de clientes, precisamos executar funções a partir de uma chamada desse path, e, ...

Vetores não ordenados são estruturas de dados para armazenar dados em sequência. Se imaginarmos uma variável em um programa, ela é composta por um dado anexado a um endereço de memória. Quando se trata de um vetor, estamos falando de conjuntos de dad...

Muitas vezes, estamos lidando com um legado e, de alguma forma, precisamos escutar ou saber das operações que estão ocorrendo em determinadas tabelas, mas nem sempre e acredito que não seja indicado connectar uma nova aplicação em sua legacy database...
![Iniciando leitura de logs do MySQL com Debezium [Parte-1]](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fstock%2Funsplash%2FLCesurcI3PM%2Fupload%2F1502726d43b386a91abc8aec9e513038.jpeg&w=3840&q=75)
Imagine que você quer executar operações de diferentes maneiras, mas com o mesmo propósito! Talvez um bom exemplo seja a execução de uma função para diferentes tipos de clientes, ou talvez ter que lidar com vários adquirentes para o mesmo endpoint, p...

Start Olá, talvez o ecossistema spring seja o mais completo da atualidade, esse ecossistema cada vez vem melhorando e refinando, temos um mundo de empresas que o utilizam e quando falamos de microserviços spring é fantástico. Por onde podemos começar...

Muitas pessoas tem dificuldades para iniciar com docker, mas na verdade se elas tem domínio das ferramentas que já trabalham no seu dia dia, docker vai ser mais um detalhe, bom acho que todos já estão cansados de saber quão bom é trabalhar com docker e quão flexível isso pode se tornar, alem do mais é amplamente utilizado em muitas empresas e acaba se tornando indispensável para o currículo de um desenvolvedor, então deixemos de lado a introdução e vamos direto aos pontos.
// quer trazer uma imagem para sua máquina e já sair rodando? esse é o comando
docker run ubuntu
// faz o download de uma imagem mas não excuta
docker pull nome_usuario/nome_image
// listando todos os containers que estiverem ativos
docker ps
// listando todos os ids dos containers, ativos
docker ps -q
// listando todos os ids dos containers, ativos
docker ps -aq
// iniciando um container
docker start name_container
// para todos os containers ativos de uma só vez
docker stop $(docker ps -aq)
// rodando um container atrelado ao seu terminal
docker run -it name_image
// para parar um container
docker stop (name or id)
// removendo um container de forma forçada
docker rm (id or name) -f
// removendo todos os containers parados
docker container prune
// rodando um container com uma porta e nome e de forma desatrelada ao terminal
docker run -d -p 80:8080 --name server nginx:latest
// parando um container e removendo e o removendo
docker-compose down --rmi all
// acessando seu container
docker exec -it name-container sh
//lista todas as imagens
docker image ls
//lista todas as imagens
docker image
// remove todas as imagens
docker rmi $(docker images -q)
// remove uma imagem
docker rmi name_image
// limpando tudo
docker system prune
// Adicionando rede
docker network create --driver bridge local
// removendo todas as redes
docker network prune
// Copiando excema de uma base mysql
docker exec container_mysql_name /usr/bin/mysqldump -u root --password=root schema > backup.sql
// Rodando um postgresql sem dockerfile
docker run --name postgres11 -e POSTGRES_PASSWORD=docker -p 5432:5432 -d postgres:11
// rodando um mongo sem dockerfile
docker run --name mongo -p 27017:27017 -d -t mongo
// rodando um mysql sem dockerfile
docker run --detach --name=mysql8 -p 3306:3306 --env="MYSQL_ROOT_PASSWORD=docker" mysql:8.0.22
Imagine o cenário, precisamos configurar uma imagem pessoal para subir em um container em determinado servidor, com o doker hub podemos facilmente ter images pessoais privadas(plano não gratuito no docker hub), assim podemos usa-las quando e onde quisermos, grandes datacenter como, gcp, amazon e azure também vão ter seus próprios registers, basta termos nosso register privado lá e conseguiremos ter nossas imagens privadas para subir em nosso servdor remoto.
Muitas vezes removemos os containers após o uso.
É muito comum usar o container e apagá-lo após o uso, dessa forma os dados desses container são perdidos e nesse ponto que os volumes ou mounts permitem salvar dados fora de um container.
Volumes são usados para os dados não serem removidos ao paramos nosso container, trata-se de um mapeamento entre seu host (computador de trabalho) e container, na maioria dos projetos que trabalhamos em ambiente de dev costumamos fazer um apontamento entre nossa maquina e algum container.
docker run -d --name nginx -v ~/ti/testdocker/html:/usr/share/nginx/html -p 8080:80 nginx
No exemplo acima apontamos um volume de nossa maquina local por meio da tag -v para dentro da pasta do nginx, dessa forma se perdemos nossa imagem o conteúdo está salvo em nosso host.
A forma mais atual de se trabalhar com volumes é utilizando mounts, um exemplo de diferença entre volumes e mouts é que volumes criam pastas em nosso host mesmo que essas não existam, mounts não.
docker run -d --name nginx --mount type=bind, source=/Users/andremartds/ti/testdocker/html,target=/usr/share/nginx/html -p 8080:80 nginx
docker run -d --name nginx --mount type=bind, source="$(pwd)",target=/usr/share/nginx/html -p 8080:80 nginx
Caso você utilize $(pwd) isso vai conseguir pegar o diretório absoluto de onde você está no momento.
Pode ser que precisemos ter um volume centralizado em nosso host e queremos apontar esses dados para um ou mais containers, nesse caso tudo que for criado em um container será apontado para os outros que compartilham desse type.
requer estar na mesma rede*
// comandos
docker volume
// criando nosso volume
docker volume create myvolume
// lista todos os volumes existentes
docker volume ls
// removendo um volume
docker volume prune (hash volume)
// inspecionando um volume
docker volume inspect myvolume
// cria um volume
docker volume create myvolue
// rodando uma imagem e atrelando nosso novo volume com -v
docker run -d -p 8082:80 --name nginx24 -v myvolume:/app nginx
// ou
docker run -d -p 8080:80 --name nginx1 --mount type=volume,source=myvolume,target=/app nginx
//e
docker run -d -p 8081:80 --name nginx2 --mount type=volume,source=myvolume,target=/app nginx
//lista os diretorios da pasta root do container
docker exec nginx ls
// acessa o container com nosso bash local
docker exec nginx -it bash
Agora que acessamos nosso container vamos alterar o arquivo index do nginx, caminho: cd /usr/share/nginx/html
sudo nano index.html
Perceba o conceito images, elas são IMUTÁVEIS ou seja, caso nosso container seja removido ao reutilzarmos a imagem que temos em nossa máquina a mesma virá sem as alterações que acabamos de fazer
caso você esteja trabalhando no linux ou mac você poderá adicionar em seu .bashrc ou zshrc alguns atalhos para executar seus comandos
alias d="docker"
alias dcu="docker-compose up"
alias dd="docker-compose up -d"
agora é só sair utilizando as abreviações na hora de rodar seus comandos docker.