sistemas:suap:docker:introducao

O projeto Docker

É uma ferramenta para criar e gerenciar containers.

Responsável por armazenar vários serviços (containers) no sistema de forma isolada.

É um projeto que oferece a você um conjunto completo de ferramentas de alto nível para transportar tudo que constitui uma aplicação entre sistemas e máquinas - virtual ou física - e trás consigo grandes benefícios agregados.

Open source.

Versão atual: 1.12 (agosto/2016)

O Docker nasceu em uma empresa de hospedagem chamada dotCloud.

Basicamente, a dotCloud usava containers internamente para executar códigos de clientes, e com o tempo, eles construíram uma monte de ferramentas úteis capazes de gerenciar muitos containers.

Em 2013, dotCloud percebeu que suas ferramentas poderiam ser úteis para outras pessoas e então lançaram como opensource, chamando de Docker.

Desde então, o projeto tornou vida própria, e tem crescido exponencialmente, além de diversas parcerias com grandes empresas como Google, RedHat, Rackspace e Canonical. (Fonte: https://www.ricardomartins.com.br/2014/09/11/docker-tutorial-mao-na-massa/)

De grosso modo, containers podem ser comparados com pequenas VMs. E eles permitem códigos e aplicações rodarem isoladamente de outros containers de forma muito rápida, compartilhando os mesmos recursos de hardware de forma segura e sem um hypervisor.(Fonte: https://www.ricardomartins.com.br/2014/09/11/docker-tutorial-mao-na-massa/)

Docker alcança sua robustez de conter a aplicação (e, portanto, de processos e recursos) via Contêineres Linux (por exemplo, namespaces e outras características do kernel). Seus novos recursos vêm de componentes e partes próprias do projeto, que extraem toda a complexidade de trabalhar com ferramentas/APIs Linux de baixo nível usadas para o sistema e para gerenciamento de aplicação, no que diz respeito a conter os processos com segurança. A seguir uma comparação do que o projeto propõe:

a) Leve: Containers compartilham o mesmo kernel do host logo faz uso mais eficiente dos recursos do sistema dendo um overhead menor que maquina virtual e com seu sistema de “layers” reaproveita grande parte dos dados, logo deixa downloads e armazenamento bem mais eficiente

b) Seguro: Containers isolam aplicativos uns dos outros e da própria infra-estrutura fornecendo uma camada adicional de proteção

c) Agiliza processos: Com seus recursos de construção, herança, versionamento em segundos vocês realiza deploy da sua aplicações (ou aplicações) de forma inteligente e eficaz !

d) Elimina inconsistência: Como Docker empacota tudo (o sistema, libs, dependências, configuração) dentro do recipiente é possível trabalhar no ambiente de desenvolvimento, da mesma forma que o de produção, é entrega-lo exatamente como deve estar.

e) Torna suas aplicações portáveis e padronizada: Com os recursos Dockerfile, Dockerhub ou mesmo repositório git's em questão de segundos você distribuído (ou porta) sua aplicação de forma padronizada e documentada.

Rancher é uma plataforma opensource para deploy de sua infraestrutura Docker de forma fácil e controlada.

O Rancher pode ser dividido em duas camadas: RancherOS, que é um sistema operacional minimalista (assim como o CoreOS) e a plataforma Rancher.

O tamanho de uma imagem do RancherOS é de de 20MB, e possui tudo que é necessário para montar seu servidor para deploy de containers Docker.

EstruturaDefinição
Docker Engine/server É o “Docker” propriamente dito. Ele é instalado nos Hosts e efetua a criação e a execução dos Containers de aplicações.
Docker Client/cli É o componente onde o administrador emite os comandos que serão enviados para o Docker Engine (server).
Docker Hub É um repositório de imagens dos Containers. Basta criar uma conta e começar a usá-lo nos projetos.
Docker Images Imagens são como o template. Comparando com a programação orientada a objetos, seriam as classes, onde a partir delas são instanciados os objetos (contêineres), representam o estado no qual o conteiner a ser instanciado terá como estrutra.
Contêineres docker diretórios contendo tudo que constitui sua aplicação. São criados a partir de Imagens do Docker. Eles são as instâncias reais que iremos utilizar. Eles podem ser inicializados, interrompidos, deletados, etc.
Dockerfile O Docker permite que possamos criar imagens a partir de um arquivo de definição (Dockerfile), onde é possível realizar ou preparar todo ambiente a partir de um script de execução.
Volumes de dados É uma função para realizarmos a persistência de dados uma vez que containers são projetados para descarta-lo após seu uso.
Mapeamento de Porta Por padrão Docker não exporta suas portas para o mundo real. Mapeamento de dados é a função para expor essas portas no host.
Link entre container Links são a funções de um container se comunicar diretamente com outro sem a necessidade de expo-lo para a rede real.
Docker-compose Arquivo de definição de serviços. Com o Docker Compose, você usa um arquivo do tipo .yaml para definir como será o ambiente de sua aplicação, e usando um único comando você criará e iniciará todos os serviços definidos. Você pode utilizar ele para simular todo o ambiente de produção. Quando você executar o docker-compose up, todo esse ambiente está disponível para você. Para usar o Docker Compose, é necessário definir antes o ambiente necessário para sua aplicação utilizando um Dockerfile.

O nosso docker compose é escrito semelhante à figura abaixo, com a diferença que usamos o framework django ao invés do flask:


Última revisão: ~~LASTMOD~~


Voltar à página Principal do SUAP (Acesso DGTI)

  • sistemas/suap/docker/introducao.txt
  • Última modificação: 2021/08/25 10:33
  • (edição externa)