Docker - From zero to hero
Ismael Apolinário Devops - CI&T
O que é o Docker?
ciandt.com
O que é o Docker?
De forma bem resumida
podemos dizer que o Docker é uma plataforma aberta
criada com objetivo de
facilitar o desenvolvimento, implantação e execução de aplicações em ambientes isolados. Ela foi desenhada especialmente para
disponibilizar sua aplicação da forma mais rápida
possível.
Porque usar Docker?
ciandt.com
Docker tem sido um assunto bem comentado ultimamente, muitos artigos foram escrito geralmente tratando sobre como usá-lo, ferramentas auxiliares, integrações e afins, mas muitas pessoas ainda se fazem a questão mais
básica quando se trata da possibilidade de utilizar qualquer nova tecnologia:
“Por que devo usar isso?” ou seria “O que isso tem a me oferecer diferente do que já tenho hoje?”
Porque usar Docker?
- Fácil gestão da infraestrutura da aplicação
- Linguagem comum entre devs e sysadmins.
- Repositório publico de soluções prontas
- Modelo focado em containers - Velocidade de disponibilização - Virtualização a nível de SO
Porque usar Docker?
ciandt.com
Infraestrutura
Docker File
ciandt.com
Imagem Base Imagem
Modificada Docker
file Modificações
Docker Image
FROM node
MAINTAINER ismaelw@ciandt.com RUN git clone -q
https://github.com/docker-in-practice/todo.git WORKDIR todo
RUN npm install > /dev/null EXPOSE 8000
CMD ["npm","start"]
1 Imagem Base
2 Responsável
5 Executa o gerenciador de pacotes do node (npm)
6 Porta exposta pelo container ao ser executado
7 Comando a ser
executado ao iniciar o container 4
Navega para o diretório
clonado Clona o 3 diretório
Image Layers
ciandt.com
- docker run -> Cria novo container
- docker stop -> Para um container em execução - docker start -> Inicia um container existente
- docker restart -> Reinicia um container existente - docker ps -> Lista os containers existentes
- docker inspect -> Obtém informações sobre o container/imagem - docker rm -> Exclui um container existente
- docker exec -> Executa um comando dentro de um container
Comandos Básicos
Docker Network
ciandt.com
O gerenciamento de redes do docker é muito semelhante aos métodos de virtualização tradicionais como virtualbox, kvm, etc. Ele fornece tipos de rede para cada finalidade.
Assim como o gerenciamento de
armazenamento, o gerenciamento de redes é controlado por driver. O docker fornece três drivers (bridge, host, e overlay), mas permite a utilização de drivers de terceiros, e a
possibilidade de criarmos nossos próprios drivers de rede.
O que o docker chama de rede, na verdade é
uma abstração criada para facilitar o
gerenciamento da comunicação de dados entre containers e os nós externos ao ambiente docker.
Docker Compose
Docker compose é uma ferramenta para definição e execução de múltiplos containers Docker. Com ela é possı́vel configurar todos os parâmetros necessários para executar cada container a partir de um arquivo de definição.
Dentro desse arquivo, definimos cada container como serviço, ou seja, sempre que esse texto citar serviço de agora em diante, imagine que é
a definição que será usada para iniciar um container, tal como portas expostas, variáveis de ambiente e afins.
Docker Hub
ciandt.com
O DockerHub é uma espécie de GitHub do Docker. Nele é possível criar uma conta e armazenar suas imagens do
Docker, assim como usufluir das imagens de outros usuários.
Em nosso exemplo, utilizamos a imagem do ubuntu que está armazenada no DockerHub, através do comando docker pull ubuntu e através do FROM ubuntu do Dockerfile. Assim como no GitHub, o endereço das imagens é sempre
usuário/imagem com exceção das imagens padrão (como é o caso da imagem do ubuntu).
<Show me the code />
https://leanpub.com/dockerparadesenvolvedore s
ciandt.com
Referência/Dica
O livro se encontra no LeanPub e o valor depende da sua avaliação. Pague quanto achar justo!
Essa versão preliminar do livro tem como foco nivelar o conhecimento básico do Docker. Que inicia explicando brevemente a infraestrutura da solução, passando por sua arquitetura, instalação, comandos básicos, entendimento e construção de imagens e containers, utilização de comandos avançados, até mesmo manipulação de ambientes em nuvem.