Ferramentas do usuário

Ferramentas do site


docker

Essa é uma revisão anterior do documento!


DOCKER

Iniciar um Container

Utilize DockerHub para encontra uma imagem. Alguns de maior uso:

  • docker pull ubuntu
  • docker pull debian
  • docker pull alpine

Verificar nomes de imagens em Docker HUB

Modo Interativo

Abaixa a imagem temporariamente e inicia o docker:

  • docker run -it debian
  • docker run -it ubuntu

Entrar em um container em execução com o usuario:

 docker exec -it -u <user> <containerid> bash 

Comandos

Observação: <variavel> devem ser substituídos por nomes requeridos.

Executar containers

 docker run <nomeimage> 

Executar containers e iniciar bash

 docker run -it <nomeimage> bash 

Executar containers em segundo plano

 docker run -d <nomeimage> 

Executar containers com nomes

 docker run -d --name <nome ><nomeimage>

Lista de imagens

 docker images 

Verifica composição de imagens

 docker history <imagename> 

Lista containers em execução

 docker ps 

Lista containers

 docker ps -a 

Iniciar containers criado

 docker start <containerid> 

Parar containers criado

 docker stop <containerid> 

Parar forçado

 docker stop -t=0 <containerid> 

Pausar containers

 docker pause <containerid> 

Despausar containers

 docker unpause <containerid> 

Executar/Abrir Prompt bash container

 docker exec -it <containerid> bash 

Excluir/Deletar Containers

 docker rm <containerid> 
Excluir/Deletar todos Containers
 docker container rm $(docker container ls -aq)
  • -a: pega todos os containers
  • -q: retorna apenas os ids

Excluir/Deletar Imagens

 docker rmi <imagename> 
Excluir/Deletar todas Imagens
 docker rmi $(docker image ls -aq)
  • -a: pega todos os containers
  • -q: retorna apenas os ids
Excluir/Deletar todas Imagens FORCE
 docker rmi $(docker image ls -aq) --force 

Mapear portas containers - utilizando portas aleatórias do host

 docker run -d -P <containerid> 

Mapear portas containers - utilizando portas específicas do host

 docker run -d -p 8080:8080 <containerid>

Listar portas host

 docker port <containerid>

Criação de Imagem - Dockerfile

Comandos Descrição
FROM qual imagem(Ubuntu, Debian, CentOs, Alpine) : qual plataforma (python, nodeJS)
WORKDIR onde inicia os comandos /app
COPY . . copia ou adiciona os arquivo para a imagem - . . - pasta atual para workdir
ADD copia/download de um link http ou copia e descompacta de um arquivo .zip
RUN rode o processo, por a aplicação em funcionamento, instalar dependencias
ENV <endereço API> configurações de ambiente o que preciso para rodar minha aplicação, conexões de API externas
EXPOSER <porta) portas
USER <user> usuario da aplicação
CMD comandos
ENTRY POINT entrada de comandos

Exemplo de Dockerfile

FROM node:12-alpine #imagem do dockerhub para Node.js utilizando Linux Alpine
WORKDIR /app #diretório principal da aplicação onde será copiado e iniciado o container
 
RUN addgroup dev && adduser -S -G jdos dev #cria em sequencia (&&) um grupo dev e usuario jdos e insere no grupo dev
USER jdos #diz para a imagem utilizar o usuario jdos apartir desse ponto na criação da imagem
 
COPY package.json . #copia apenas um arquivo 
 
RUN npm install --omit=dev #instala um pacote npm
 
COPY . . #copia os arquivos da pasta atual para a pasta atual dentro da imagem (WORKDIR)
CMD ["node","src/index.js"] #executa um comando qnd a imagem inicia
 
EXPOSE 3000 #expoe uma porta para acesso

Pode-se executar para construir uma simples imagem dentro da pasta da aplicação:

docker build -t app . 

Pode-se ganhar performance na build de um imagem docker utilizando CACHES da contrução ANTERIOR, apenas modificando as linhas do arquivo de construção

ATENÇÃO o nome do arquivo deve ser: Dockerfile

FROM node:14
WORKDIR /app-node
ARG $PORT_BUILD=6000
ENV PORT=$PORT_BUILD
EXPOSE $PORT_BUILD
COPY . .
RUN npm install
ENTRY POINT npm start

Descrição:

  1. Utiliza a imagem apartir do node 14 como base
  2. Cria pasta app-node dentro do container a ser criado
  3. Especifica uma porta ao criar o container 6000 ARG (variavel durante construção da imagem) e ENV variável que existe dentro do container em execução
  4. Explicita a porta que será usado na nossa aplicação (expose)
  5. Copia os arquivos da pasta atual para pasta app-node dentro do container
  6. npm install
  7. npm start

Executar na mesma pasta:

docker build -t <crieseunometag>/<crienomeimagem>:<x.x> . 

Criar Copia de uma imagem docker - Mudar TAG

docker tag <nometag/nomeimage:1.0> <novatag/nomeimage:1.0>

Publicar sua imagem no DOCKERHUB

  • Login DockerHub
docker login
  • Crie seu app no docker DockerHub (ex. jdos/app)
  • Mude a tag igual a criada no DockerHub
docker tag <iddocker> <jdos/app:v1>
  • Subir a imagem
docker push <jdos/app:v1>

Transferir imagem sem DockerHub

Export:

docker image save -o <nomeimage>.tar <app:v1>

Load:

docker image load -i <nomeimage>.tar 

Percistência de dados - DIRETORIO LOCALHOST

docker run it -v <path/local/host>:</path/image> imagename bash

SEMANTICA:

docker run it --mount type=bind,source=<path/local/host>,target=</path/image> imagename bash

Além disso, é importante lembrar que `bind mounts` dependem da estrutura de pastas do host, o que pode gerar problemas de portabilidade se você precisar mover seu container para outro ambiente. Já os volumes são gerenciados pelo Docker e podem ser compartilhados entre diferentes containers, além de serem mais fáceis de gerenciar e manter.

Listar volume

 docker volume ls 

Criar volume

 docker volume create <nome-volume> 

Descrição: O docker cria o volume no host em: /var/lib/docker/volumes/

Percistência de dados - VOLUME

 docker run -it -v <meu-volume>:</path/container> nomeimage bash

ou

 docker run it --mount source=<meu-volume>,target=</path/image> imagename bash 

Descrição: A diferença é que utilizando –mount não precisa criar o volume, caso não exista ele criará automaticamente.

Percistência temporária - tmpfs

 docker run -it --tmpfs=<path> nomeimage bash 

Descrição: Armazena os arquivos em memória

Configurações de Rede

 docker network ls

Verificar as configurações do container:

 docker inspect <imagename> 

Configurações de Reinício

Alterar Política de reinício em container existente:

 docker update --restart unless-stopped <containerid> 
docker.1775681452.txt.gz · Última modificação: por jdos

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki