>_Docker Linux Container – Conceitos básicos – 1.1

docker

Container Docker.

Docker é um projeto OpenSource que fornece uma plataforma para desenvolvedores e administradores de sistemas permitindo que se crie Containers leves e protrátil de diversas aplicações.

Sua funcionalidade permite que adicione recursos e que simplifique o uso, dos linux containers (LXC), que são, basicamente, uma forma de isolamento de processo e sistemas, quase como virtualização, porém mais leve e integrada ao host.

O Docker então te permite criar aplicações e “Containers”, que isolam o S.O base e todo a pilha de dependências de seu app (libs, servidores e etc) de forma leve em espaço e performance.

O Docker trabalha ainda com um sistema de arquivos “empilhaveis”, o aufs, que permite que os passos para configuração do seu container funcionem de forma incremental e “cacheable”, mais ou menos como “commits” do GIT. 

Em poucas palavras, o Docker 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.

O que é um Container?

O Contaniers nada mais é que um chroot. Nele é possível definir recursos como memória, rede, sistema operacional, aplicação, serviço e etc.

Em um Container Docker é possível utilizá-lo para testes, desenvolvimentos, estudos e etc. Além de tudo isso, também é possível utilizá-lo  em um ambiente de produção.

Qual é sua base?

O Docker tem como base o LXC Linux Container.

LinuX Containers (LXC) é um método de virtualização em nível de sistema operacional para executar vários sistemas Linux isolados (contêineres) em um único host de controle (LXC host).

LXC não fornecer uma máquina virtual, mas fornece um ambiente virtual que tem sua própria CPU, memória, bloco I/O, rede, etc espaço. Este é fornecido por cgroups recursos no kernel do Linux no host LXC. É semelhante a um chroot, mas oferece muito mais isolamento.

Linux Containers (LXC).
Permite rodar um Linux dentro de outro Linux.
Chroot on Steroids.
Dentro do container, parece uma VM.
Não é Para-Virtualização.
Fora do Containers o Docker não passa de mais um processo para o sistema operacional.

docker_structure

Porque usar Containers?

  1. Velocidade.
  2.  Boot em questão de segundos.
  3. Economia de recursos
  4. Os processos rodando dentro de um Container são vistos como um processo no sistema Host.
  5. É possível subir vários Containers ao mesmo tempo, consumindo o minimo de recursos do hardware físico ou virtual.

Diferenças entre o Sistema Operacional comum/virtualizado com o Container Docker.

Sistema Operacional.

  • Bootfs – Boot FileSystem.
  • Bottloader e Kernel.
  • Rootfs – Root Filesystem.
  • Restante dos arquivos do sistema.

 Container Docker.

  • Bootfs – (LXC, aufs/btrfs) – Mesmo Kernel da máquina.
  • Rootfs – Sistema de arquivos.

Com o carregamento do rootfs, o Container Docker ficará pronto para execução.

O Docker está totalmente baseado no conceito de Layers.

docker-filesystems-multilayer

Em um boot tradicional do Linux:

  • O Kernel monta o rootfs como read-only, checa sua integridade e faz a montagem como read-write.

 No Docker:

  • O Kernel monta o rootfs como read-only, depois outro filesystem é montado como read-write em cima do rootfs.
  • Unio File System. ( O Kernel monta a partição raiz como somente leitura, só que ao invés de remontar a partição como read-write, ele se encarrega de pegar um outro FileSystem e em seguida o coloca acima do primeiro rootfs.

Observação:

  • No Docker após o carregando o rootfs o container estará pronto para executar a imagem.
  • Image – Layer somente leitura ( Imagem base de um sistema operacional – ‘snapshot’ ).
  • O Container é uma layer read-write montada a partir de uma image que é read-only.
  • No Docker uma image é um layer read-only.
  • Uma image é uma herança de imagem.
  • Uma base image é quando uma imagem não possui um Pai (única).

 Como é construído um Container?

  • O container é construído usando namepspaces, cgroups, chroot entre outras funcionalidades do kernel para construir uma área isolada para sua aplicação.

 O que é o Registry (Registro)?

https://registry.hub.docker.com

  • O registro é um repositório provido pelo Docker. Ele se econtra na nuvem, e disponibiliza uma área para envio, download e compartilhamento de imagens (snapshots) de Containers.

 Fontes:

  • http://www.ricardomartins.com.br/docker-tutorial-mao-na-massa/
  • http://imasters.com.br/infra/linux/baleias-na-nuvem-entenda-como-funciona-o-docker/
  • http://pt.slideshare.net/jpetazzo/introduction-docker-linux-containers-lxc
  • http://manifesto.blog.br/2.0/Linux/docker-containers-isolamento-e-replicabilidade-de-ambientes-de-producao
>_Docker Linux Container – Conceitos básicos – 1.1
Tagged on:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: