04- Diferença entre Images e Containers no Docker

Seguindo as minhas anotações dos estudos em Docker, hoje irei apresentar alguns pontos, um pouco mais a fundo, sobre o que seria as Images e Containers no Docker.

Images

Uma Imagem Docker é basicamente um template de várias camadas de arquivos, pre configuradas, de permissões somente leitura, com instruções para criação de um container. Ela será consumida assim que um container é iniciado. Essas Imagens podem ser um S.O completo como Ubuntu/Debian/CentOS/Alpine ou uma aplicação/serviço como Nginx/MySQL/Drupal/GLPI entre outros. Geralmente uma imagem é baseada em outra imagem, com alguma modificação adicional. Podemos por exemplo pegar uma imagem de um CentOS pronta e instalar um GLPI com o Banco de Dados nela e fornecer para possíveis instalações futuras.

As Imagens são sistemas de arquivos de inicialização bootfs(muito parecido com o próprio sistema de boot do Linux), também temos cgroups (controle e limitações de processos) , namespace (isolação do container), por fim, no topo das camadas, temos o rootfs (será o sistema na qual o container será executado, CentOS, Alpine, Ubuntu). Quando um container é iniciado, o Docker não há interação com o bootfs, no processo de inicialização, ele é movido para a memória e o bootfs é desmontado para liberar memória RAM utilizada pela imagem de disco initrd.

As Imagens podem ser criadas do zero pelo usuário ou também baixadas do repositório oficial do Docker Hub (hub.docker.com/), onde nesse repositório há as imagens oficiais disponíveis pelos fabricantes dos softwares e há também imagens modificadas e disponibilizadas por outros usuários. Caso queira disponibilizar uma imagem no Docker Hub, basta criar uma conta, atrelar uma tag a a sua imagem e utilizar o utilitário push para “subir” sua imagem para seu repositório.

Containers

Um container, é uma instancia executável de uma imagem, é possível executar a partir de uma camada de imagem. Quando o container é executado, todas as alterações provenientes da aplicação rodando, é executada dentro dele. Por padrão, quando é iniciado um container, ele fica completamente isolado de outros containers em execução e também do Host Docker. Todo o isolamento da rede (como abertura de portas e subredes e etc), permissões de volumes e diretórios são configuráveis através do CLI do Docker e API.

Quando um container é removido, seu ciclo de vida acaba, todas as alterações em seu estado são removidos e não ficam armazenadas, apenas quando é utilizado um volume persistente. Essas alterações também não são gravadas nas camadas da Imagens utilizadas para criação do mesmo.

Monitoring, DevOps Student and content creation!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store