Docker - Como utilizar

28/09/2023
Docker - Como utilizar

Comandos Docker

Estado do processo docker (process status - ps) lista de todos os containers rodando no docker

docker ps

Parametros úteis

ParametroFunção
-aincluir containers que não estão mais rodando
-qsó o id do container, útil para usar de dado de entrada para outros comandos

Rodando coisas no Docker

Começando do básico

docker run hello-world

parâmetros úteis

ParametroFunção
-ddestravar o terminal e roda o container em background
-epassar variáveis de ambiente
-imodo interativo, mantém o stdin
-pmapeamento de portas docker -> máquina local
-talocar um tty para acessar o container
-vvincular volumes ao container
-rmremove o container assim que ele cair
—namedefine um nome para o container

Entrando em um container obs.: “-it” == “-i -t”

docker run -it ubuntu bash

Acessando localmente algo que está no docker pelo parâmetro -p mapeamos a porta 80 de dentro do docker para a porta 8080 da maquina local

docker run -p 8080:80 nginx

assim podemos acessar o nginx localmente através da porta 8080

os containers tambem podem ser nomeados para serem removidos pelo nome dado a eles e nao pelo nome gerado

docker run -d -p 8080:80 --name server nginx

agora o nginx esta rodando e o container se chama server e pode ser referenciado desta forma. para acessar um container já em execução, utilizamos o exec

docker exec -it server bash

Bind mounts

mapeamento de pastas para dentro de um container através de volumes Primeiro criando um arquivo na máquina local

# ~/Projects/files/index.html
<html>
<h1>Custom Server Title</h1>
<br>
<h2>Welcome to the server!!<h2>
</html>

depois mapeando este volume arquivo para um diretorio dentro do container Obs.: a estrutura do container muda de acordo com a imagem usada, caso nao saiba a estrutura do container em utilização, pesquise ou entre nele via bash para ver

docker run -d -p 8080:80 -v ~/Projects/files/:/usr/share/nginx/html --name server nginx

tip: usar guia anonima para nao ter problemas com cache tip(2): da pra usar ”$(pwd)” no path do comando para referenciar o diretório atual

A forma mais elegante e atual de executar essa mesma ação

docker run -d -p 8080:80 --mount type=bind,source=~/Projects/files/,target=/usr/share/nginx/html --name server nginx

diferenças: —mount é mais explicito o bind, se o source for incorreto, o -v cria o diretório novo, o —mount da erro

Como criar volumes

docker create volume meuVolume

agora para ver os detalhes do volume

docker volume inspect meuVolume  

resultado:

[
  {
      "CreatedAt": "2023-09-28T16:40:47-03:00",
      "Driver": "local",
      "Labels": null,
      "Mountpoint": "/var/lib/docker/volumes/meuVolume/_data",
      "Name": "meuVolume",
      "Options": null,
      "Scope": "local"
  }
]

agora da pra usar o volume criado igual qualquer outro e estes arquivos vao ser compartilhados pelos containers que utilizarem estes volumes

docker run -d -p 8080:80 --mount source=meuVolume,target=/app --name server nginx

ou

docker run -d -p 8080:80 -v meuVolume:/app --name server nginx

porem criando vários volumes, ao longo do tempo vamos tomando muito espaço em disco, para limpar os volumes do docker, use:

docker volume prune

Dockerfile

podemos criar arquivos docker para criar uma imagem personalizada de acordo com a nossa necessidade

# imagem base usada para a criação da nova imagem
FROM nginx:latest

# comandos a serem executados na criação da imagem
RUN apt update
RUN apt install -y vim

para executarmos este docker file, abrimos o terminal na pasta onde o arquivo se encontra e executamos o comando:

docker build -t nginx-vim:latest .

o parâmetro ‘-t’ define a tag da imagem, assim como usamos antes o nginx antes, agora temos uma versão do ‘nginx’ com o vim instalado chamada de ‘nginx-vim’

já o ’.’ no final se refere a localização do arquivo Dockerfile, como estamos com o terminal aberto no mesmo diretório do arquivo Dockerfile, usamos o ponto, caso nao seja o caso, devemos usar o caminho relativo do arquivo

#todo

  • ver diferenças de docker [kill | stop | rm];
Back to Notes page