Conclusão

Conclusão, nomenclatura e perguntas frequentes

Conclusão

Uma das grandes vantagens do Docker está em resolver o problema de executar aplicativos em sistemas incapacitados, seja por incompatibilidade do sistema, ou pela falta de programas, binários, bibliotecas ou dependências necessárias para a execução do aplicativo. Com o uso de containers, o Docker acaba com a necessidade de executar um sistema operacional inteiro(como em uma máquina virtual) para rodar um aplicativo, proporcionando ao usuário um ambiente portátil e com todas as necessidades básicas para sua execução. Além disso, Docker é perfeito para proporcional um ambiente de desenvolvimento homogêneo entre uma equipe, ao permitir a criação e compartilhamento de "SOs com configurações customizadas" com alguns simples passos, e seu vasto registro de imagens e repositório de aplicações e dependências soluciona virtualmente todos os problemas relacionados à configuração de ambiente que um desenvolvedor possa ter.
Portanto, ainda que ele possua seus problemas com interfaces gráficas e com divisão de recursos, Docker permanece uma excelente opção para se desenvolver e executar pequenas aplicações de servidor com simplicidade e maestria, garantindo aos desenvolvedores um ambiente de desenvolvimento homogêneo, leve e de simples configuração.




Nomenclatura

Dockerfiles

Uma vantagem do Docker são Dockerfiles, arquivos de texto que contém comandos que um usuário pode executar na hora da criação de um container. Eles permitem a configuração de arquivos de imagem, que por sua vez serão usados para a criação de containers com configurações específicas. Pode-se pensar em um Dockerfile como uma “lista de instruções a ser lida no momento de criação de um container”. Por ser um simples arquivo de texto, pode ser facilmente compartilhado, tornando-se útil para uma equipe que deseja desenvolver em um ambiente de trabalho homogêneo.





Perguntas

1) Quais são os 4 componentes básicos do Docker e o que fazem?

Os 4 componentes são os seguintes:

  • Docker server e daemon: lida com o gerenciamento de recursos, criação de destruição de containers e conexão entre o cliente e tais containers.
  • Imagens: São arquivos de imagem de sistemas operacionais, e servem de base para a criação de containers. São armazenadas no Registro do Docker.
  • Registros: Armazenam os arquivos de imagem que serão usados de base para construir containers.
  • containers: São a parte principal do Docker. São pacotes executáveis de imagens de SO que agem como um sistema autônomo, porém são mais fáceis de serem configurados e bem mais leves, pois só carregam as bibliotecas e dependências necessárias ao serem instanciados, ao contrário do que um SO comum costuma fazer.

2) Qual a principal vantagem de um container do Docker, quando comparado a um ambiente de desenvolvimento comum?

Um container do Docker, ao ser instanciado, apenas baixa e carrega as bibliotecas e dependências pedidas pelo usuário, ao contrário de um SO comum, que carrega diversos arquivos ao ser iniciado, muitos dos quais irrelevantes para a execução da tarefa atual a ser realizada. Isso torna os containers muito mais velozes ao inicializarem, e também os torna bem mais leves do que um SO comum.


3) Qual a diferença entre um container do Docker e uma máquina virtual?

R: Em uma máquina virtual, cada instância de uma imagem de sistema operacional instancia o sistema operacional inteiro, com todas as suas libs e dependências, portanto N instâncias.
Um container, por outro lado, é executado em cima de um arquivo de SO, porém ao contrário de uma máquina virtual, vários containers podem ser executados em cima de um mesmo arquivo de imagem, e estes só instanciam as libs e dependências que forem utilizar, em vez de instanciar todas as existentes.


4) Como o Docker lida com possíveis conflitos de rede entre containers?

O Docker realiza um mapeamento entre suas portas(as portas físicas do hardware do servidor) e as portas virtuais de cada container. Dessa forma, se mais de um container utiliza a porta 80 para alguma troca de mensagens pela rede, por exemplo, o host do Docker mapeia diferentes portas físicas para as portas virtuais 80 destes containers, de modo que os pacotes de e para cada um deles sejam encaminhados corretamente.