Untitled
Untitled
Untitled
com
mateusabel960@gmail.com
Docker Página 2
LISTA DE FIGURAS
LISTA DE QUADROS
LISTA DE CÓDIGOS-FONTE
SUMÁRIO
7 DOCKER ........................................................................................................... 6
7.1 Virtualização - recapitulando .......................................................................... 6
7.1.1 Sistema virtualizado por máquina virtual (H-based) .................................... 9
7.1.2 Sistema virtualizado por container (OS-based) ........................................... 11
7.1.3 VM ou container? ........................................................................................ 11
7.2 Container e microcontainers........................................................................... 12
7.3 Docker ............................................................................................................ 13
7.3.1 Vantagens e benefícios no uso do Docker .................................................. 14
7.3.2 Componentes da arquitetura do container Docker ...................................... 15
7.3.3 Como funciona o Docker? ........................................................................... 17
7.3.4 Boas Práticas para uso do Docker .............................................................. 18
7.4 Automação e implantação em container Docker ............................................ 19
7.5 Segurança dos containers .............................................................................. 21
7.6 Instalando um Docker..................................................................................... 22
7.6.1 Instalando um Docker em sistema operacional Windows ........................... 23
7.6.2 Instalando um Docker em sistema operacional para Linux, Ubuntu ............ 23
7.6.3 Instalando um Docker em sistema operacional MacOS .............................. 23
7.7 Docker container e a relação com os microsserviços..................................... 24
7.7.1 Container Docker x Monolíticos e Microsserviços ....................................... 25
7.7.2 Arquitetura monolítica e o container Docker ................................................ 26
7.7.3 Arquitetura de microsserviços e o container Docker ................................... 27
7.8 Storage no container Docker .......................................................................... 27
7.8.1 Persistindo dados no ambiente Docker ....................................................... 31
7.9 Docker Compose ............................................................................................ 32
7.9.1 Entendendo o arquivo docker-compose ...................................................... 33
7.10 Serverless Computing: o que é? .................................................................. 36
7.10.1 Como escolher um fornecedor Serverless para sua empresa? ................. 38
7.11 CDN.............................................................................................................. 40
REFERÊNCIAS .................................................................................................... 42
7 DOCKER
Sempre que ela precisar atender mais usuários pode receber rapidamente mais
processamento e memória e, por sua vez, sempre que a infraestrutura física for
insuficiente, novos computadores são adicionados ao cluster em um upgrade
horizontal. O Cloud Computing nada mais é que o compartilhamento desta
infraestrutura entre diversas necessidades e clientes, em um modelo de negócio e
cobrança diferenciado.
H-based é o tipo mais comum. Uma máquina virtual (VM, do inglês Virtual
Machine) requer um Sistema Operacional (SO) completo e exclusivo, além de kernel
próprio, binários, aplicativos e bibliotecas, o que exige dimensionar espaço grande no
servidor e custo de manutenção. Diversas VMs com SOs diferentes podem ser
executadas e uma mesma infraestrutura física.
Apesar dos benefícios listados, uma VM contém vários GBs e demora minutos
para ser executada, assim, foi necessário criar uma alternativa mais simples e leve,
surgindo, então, a virtualização com container.
7.1.3 VM ou container?
7.3 Docker
Portabilidade.
Flexibilidade.
Escalonamento.
Disponibilidade.
Velocidade.
Rapidez no boot.
Redução de custos.
Implantação simplificada.
Execução de deploys.
Você vai ver, em seguida, algumas dicas de como trabalhar com um container
Docker.
Docker Container: detém tudo o que é necessário para uma aplicação ser
executada. Cada container é criado a partir de uma imagem Docker. Cada
container é uma aplicação isolada independente.
O container Docker faz a comunicação entre cliente e servidor por meio de uma
API e conta com o docker engine para resolver o problema de dependência de
infraestrutura, possibilitando que os aplicativos em container sejam executados em
qualquer lugar de forma consistente.
Por ser um processo do host hospedeiro, não deve ter vida longa (uptime),
precisa ser iniciado e encerrado.
Para acesso aos containers Docker, o host hospedeiro deve prover recursos
de segurança essenciais.
Melhor rastreabilidade.
containers. Cada uma delas é responsável por desempenhar suas atividades sem se
preocupar com os mecanismos e funcionamentos das demais áreas.
Inicie o Docker:
$ docker -v
$ docker –version
$ docker-compose --version
$ docker-machine --version
Imagem e layers:
Uma imagem do Docker é composta por diversos layers. Cada layer representa
uma instrução no Dockerfile da imagem. As camadas são empilhadas umas sobre as
outras e quando você cria um novo container, adiciona uma nova camada writable
sobre as camadas subjacentes.
Container e layers:
Trabalhar com volumes foi considerada a melhor forma para resolver grande
parte dos problemas de persistência de dados em um container, pois o conteúdo do
volume fica fora do ciclo de vida do container; é também a melhor maneira de evitar
problemas de desempenho ao longo do caminho, devido ao fato de que os volumes
não aumentam o tamanho dos containers que os utilizam.
Uma informação muito importante sobre o padrão YAML é que ele é baseado
na indentação com espaços como separador dos blocos de códigos das definições,
não sendo permitida a utilização do TAB. Caso a indentação não seja feita
corretamente, o docker-compose apresentará falha em sua execução.
version: “3.7”
services:
fiap-web:
build: .
context: ./dir
dockerfile: Dockerfile-alternate
args:
versao: 1
ports:
- "8080:80"
fiap-image1:
image: fiap-image1
Código-fonte 7.1 – Exemplo completo
Fonte: Elaborado pela autora (2019)
version: “3.7”
version: “3.7”
services:
Como segundo nível de indentação (*), linha três, temos o nome do primeiro
serviço desse arquivo, o fiap-web, abrindo o bloco de definições do serviço, ou seja,
tudo que for definido a partir do próximo nível de indentação faz parte desse serviço.
version: “3.7”
services:
fiap-web:
version: “3.7”
services:
fiap-web:
build: .
version: “3.7”
services:
fiap-web:
build: .
context: ./dir
version: “3.7”
services:
fiap-web:
build: .
context: ./dir
dockerfile: Dockerfile-alternate
Na linha oito, temos o args, abrindo um novo bloco de código para definir os
argumentos que serão usados pelo Dockerfile. Os argumentos de construção são
variáveis de ambiente, acessíveis apenas durante o processo de construção, e devem
ser especificadas primeiramente no seu Dockerfile e depois no seu arquivo Docker-
compose.
version: “3.7”
services:
fiap-web:
build: .
context: ./dir
dockerfile: Dockerfile-alternate
args:
versao: 1
version: “3.7”
services:
fiap-web:
build: .
context: ./dir
dockerfile: Dockerfile-alternate
args:
versao: 1
ports:
- " 8080:80"
version: “3.7”
services:
fiap-web:
build: .
context: ./dir
dockerfile: Dockerfile-alternate
args:
versao: 1
ports:
- "8080:80"
fiap-image1:
image: fiap-image1
Escalabilidade.
Alta disponibilidade.
Tolerância a falhas.
Vantagens Desvantagens
É extremamente barato (US$ 0,20/milhão
de requisições na AWS): a utilização de
recursos é cobrada por uso (pay-per-use) Dificuldades de debugging e teste.
e é rentável principalmente quando o
tráfego é irregular ou inesperado.
As functions devem executar no tempo
Não é preciso configurar o servidor
limite (timeout) de 300 segundos, para
(exemplo Node, NGINX, Apache etc.).
garantir que sejam rápidas e escaláveis.
Vimos um exemplo prático sobre isso em nosso sexto capítulo sobre Google
Cloud Computing, o App Engine, você se lembra? Para funções, procure por Google
Cloud Functions também!
7.11 CDN
REFERÊNCIAS
DOCKER. Modern app architecture for the enterprise. 2016. Disponível em:
<https://www.docker.com/sites/default/files/WP_ModernAppArchitecture_04.12.2016
_1.pdf>. Acesso em: 11 set. 2019.
LISTA DE ABREVIATURAS
TI Tecnologia da Informação
VM Virtual Machine