Playground Docker

Objetivo

Containarizar minha aplicação.

Roadmap

  • Entendendo o Docker:
  • Docker Engine;
  • Arquitetura do Docker;
  • Tecnologias que compõem o Docker;
  • Docker Commandline:
  • Baixando e utilizando uma imagem;
  • Rodando uma imagem no modo interativo;
  • Montando um volume;
  • Expondo uma porta;
  • Criando a sua imagem com Dockerfile:
  • Build da sua uma imagem;
  • Comandos : FROM, RUN, ARG,ENV, ADD, WORKDIR CMD, ENTRYPOINT;
  • Docker Hub;
  • Construindo com docker-compose:
  • Construindo seu ambiente;
  • Criando uma rede interna;

Pré-requisitos:

  • Conhecimentos básicos de linux
  • Conhecimentos básicos de bash command-line
  • Conhecimentos básicos de shell

1 - Overview:


2 - Docker Commandline:

  • Baixando e utilizando uma imagem;
  • Rodando uma imagem no modo interativo;
  • Montando um volume;
  • Expondo uma porta;

Baixando e utilizando uma imagem;

Verificando imagens locais

$ docker images
$ docker images | grep 'node'
$ docker image rmi

Baixar imagem:

$ docker pull node:slim

Rodar uma imagem:

$ docker run node:slim

Rodar uma imagem no modo interativo:

$ docker run --name api-ts -it node:slim /bin/bash

Rodar uma imagem no modo interativo com auto-remove:

$ docker run --name my-api --rm -it node:slim /bin/bash

Criando uma imagem e montando um volume:

$ docker build -t image-api -v ${PWD}/api /app .

Referências:


4 - Dockerfile

  • Build da sua uma imagem;
  • Comandos : FROM, RUN, ARG,ENV, ADD, WORKDIR CMD, ENTRYPOINT;
  • Docker Hub;

Criando uma imagem:

$ docker build -t image-api .

Criando uma imagem e montando um volume:

$ docker build -t node-ts . --build-arg ENV='local'
  docker run -p 8000:8000 -v ${PWD}/api:/app  --rm -it --name minha-api-ts node-ts

Referências:


5 - Docker Compose (orquestrador de ambientes)

  • Comandos
  • Criando nosso ambiente

Referências:


Comandos utilizados shell:

  • touch - cria um arquivo vazio
  • mkdir - cria uma pasta
  • echo 'opa' - mostra uma string (como um console.log)
  • ls -la - lista os arquivos de uma pasta
  • pwd - mostra o path absoluto atual
  • ${PWD} - variável de ambiente que com o valor do path absoluto atual
  • watch -n1 -e 'docker ps' - roda um comando a cada 1 segundo
  • chmod +x <caminho_do_arquivo> - altera a permissão de um arquivo para que ele seja executável
  • ln -s arquivo_origem link_destino - cria um link simbolico

Tips to deep: