# Usando o Docker em análise de Dados

Tenho usado o Docker com o mesmo enfoque que os desenvolvedores o fazem. Crio ambientes para trabalhar com dados mais rápido com contêineres. Os contêineres do Docker agrupam o software e suas dependências em uma unidade padronizada para desenvolvimento de software que inclui tudo o que é necessário para executar: código, tempo de execução, ferramentas do sistema e bibliotecas. Isso garante que o ambiente sempre execute o mesmo e simplifica a colaboração como compartilhar uma imagem de contêiner.

Como ensinam os mantenedores do Docker (opens new window), os contêineres, com Windows ou Linux, são apoiados por ferramentas e APIs do Docker e ajudam a criar um software melhor: embarque mais rápido e pare de perder horas tentando configurar ambientes de desenvolvimento, criar novas instâncias. Elimina as inconsistências do ambiente e o problema "funciona na minha máquina", compactando o aplicativo, as configurações e as dependências em um contêiner isolado.

# O Docker

Os ambientes criados através de imagens do Docker são diferentes daqueles que temos ao criar máquinas virtuais no QEMU, Virtual Box, VM Ware ou no Parallels.

Enquanto a máquina vitual é uma implementação por software de uma arquitetura que executa instruções pré-definidas da mesma forma que uma CPU física permitindo a instalação do SO e as demais aplicações, no contêiner não há qualquer sistema operacional instalado e em execução.

Cada contêiner obtém do sistema operacional do seu hospedeiro uma cópia virtual da tabela de processos, das interfaces de rede e dos pontos de montagem do sistema de arquivos, além de recursos de memória e processamento para utilizar em seus proprios processos.

Servidor Docker

As máquinas vituais, no entanto, permitem que sejam instalados diferentes SOs seus utilitários e aplicações. Nos contêineres, no entanto, as aplicações se limitam àquelas que rodam no SO do hospedeiro, que em nosso caso, significa aplicações desenvolvidas para o Linux. Mais informações em Docker Simplified: A Hands-On Guide for Absolute Beginners (opens new window)

# Termos que serão usados nesta sessão

Um pequeno resumo dos termos que usamos ao trabalhar com contêineres no Docker:

  • Imagens (Images)- A imagem é um arquivo, compactado que contém camadas de informações sobre o sistema de aquivos, arquivos dos programas instalados e outros recursos necessários para a criação de um contêiner.

  • Contêineres (Containers)- O contêiner é um arquivo que armazena as informações necessárias para criar um ambiente isolado para executar os processos que foram definidos na imagem. Nele estão definidas, quando necessário, caracteristicas de rede e armazenameto dos dados de trabalho, por exemplo.

  • "Docker Daemon" - É um serviço, e portanto roda em segundo plano no host, que gerencia a construção, execução e distribuição de contêineres do Docker.

  • Cliente do Docker (Docker Client) - É a ferramenta de linha de comando utilizada para trabalhar com os contêineres. É o cliente que interage com o "daemon". Existem ferramentas gráficas que tornam esta interação com o "deamon" mais produtiva, como o Portainer (opens new window), que possui ma interface WEB bem intuitiva e que roda, também, à partir de um contêiner. ☻

  • "Docker Hub" - É o repositório oficial de imagens, mantido pela Docker. O Docker Hub (opens new window) é onde estão as imagens oficiais, além de imagens de usuários.

Muito Cuidado!

Escolha com atenção o que vai baixar, pois usuários mal intecionandos tem disponibilizado imagens com programas maliciosos.

Sempre que possivel, parta das imagens oficiais dos produtores do software que você está procurando e adicione as funcionalidades que precisa.

fonte(docker-curriculum.com (opens new window))

Para dicas sobre instalação veja os artigos: