Redes II - Docker

Introdução

O que é Docker?

Docker é um projeto open-source baseado em containers de Linux. Ele é um software que fornece containers de virtualização de Sistemas Operacionais(existem outros, mas o Docker é o mais popular). Com ele, um usuário pode emular uma máquina virtual pela nuvem, tornando assim possível que um único usuário, a partir de um único terminal, manipule diversas instâncias de máquinas virtuais.

Retirado de https://github.com/phusion/passenger-docker

Por que usar Docker?

Existem várias vantagens para se utilizar Docker, as principais sendo sua leveza e facilidade de configuração, e a possibilidade de ser compartilhado com diversos desenvolvedores.

Retirado de https://www.sumologic.com/application/docker/

Funcionou na minha máquina

Um possível problema é a eventual necessidade de utilizar programas que não são compatíveis com certos sistemas(como um programa exclusivo para Mac OSX), ou então de usar programas que foram compilados para certas versões do sistema/compilador(como por exemplo um framework que funciona com Python 2.7, mas o Python da sua máquina é 3.4), e você não deseja ou não pode recompilar o código-fonte do framework para se adaptar ao seu sistema. Em casos assim, uma boa solução é a que o Docker oferece, pois podemos emular pela nuvem um Sistema Operacional compatível e com as configurações necessárias para construir nossos projetos.

Retirado de http://simply-the-test.blogspot.com.br/2010/05/it-works-on-my-machine.html

Problemas com port mapping

As vezes temos a necessidade de destinar portas exclusivas para nossos programas. Supondo que tenhamos um programa que utiliza a porta 100 para enviar serviços http, e não há como mudar essa funcionalidade. Com o Docker, um usuário é capaz de rodar vários containers, todos com este serviço funcionando na sua respectiva porta 100(que embora seja fisicamente dividida, cada container se enxerga como sozinho na máquina), e o próprio Docker mapeia os pacotes que chegarem para o container respectivo.

Seguindo em frente, veremos o funcionamento interno do Docker. →