Utilize DockerHub para encontra uma imagem. Alguns de maior uso:
docker pull ubuntudocker pull debiandocker pull alpineVerificar nomes de imagens em Docker HUB
Abaixa a imagem temporariamente e inicia o docker:
docker run -it debiandocker run -it ubuntuEntrar em um container em execução com o usuario:
docker exec -it -u <user> <containerid> bash
Observação: <variavel> devem ser substituídos por nomes requeridos.
docker run <nomeimage>
docker run -it <nomeimage> bash
docker run -d <nomeimage>
docker run -d --name <nome ><nomeimage>
docker images
docker history <imagename>
docker ps
docker ps -a
docker start <containerid>
docker stop <containerid>
docker stop -t=0 <containerid>
docker logs -f <containerid>
Timestamp:
docker logs -t <containerid>
Tail:
docker logs -n 10 <containerid>
docker pause <containerid>
docker unpause <containerid>
docker exec -it <containerid> bash
docker rm <containerid>
docker container rm $(docker container ls -aq)
-a: pega todos os containers-q: retorna apenas os idsdocker rmi <imagename>
docker rmi $(docker image ls -aq)
-a: pega todos os containers-q: retorna apenas os idsdocker rmi $(docker image ls -aq) --force
docker run -d -P <containerid>
docker run -d -p 8080:8080 <containerid>
docker port <containerid>
| 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 |
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:
Executar na mesma pasta:
docker build -t <crieseunometag>/<crienomeimagem>:<x.x> .
docker tag <nometag/nomeimage:1.0> <novatag/nomeimage:1.0>
docker login
docker tag <iddocker> <jdos/app:v1>
docker push <jdos/app:v1>
Export:
docker image save -o <nomeimage>.tar <app:v1>
Load:
docker image load -i <nomeimage>.tar
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.
docker volume ls
docker volume create <nome-volume>
verificar:
docker volume inspect <nome-volume>
Descrição:
O docker cria o volume no host em: /var/lib/docker/volumes/
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.
docker run -it --tmpfs=<path> nomeimage bash
Descrição: Armazena os arquivos em memória
docker network ls
Verificar as configurações do container:
docker inspect <imagename>
Alterar Política de reinício em container existente:
docker update --restart unless-stopped <containerid>