Uma imagem de contêiner é um acúmulo reunido de camadas que incluem o seguinte:
- Imagem de base
- Bibliotecas
- Binários
- Dependências
- Arquivos de configuração
Em novas imagens criadas a partir do zero, tudo começa com a camada inferior, a imagem de base. A imagem de base é onde a maioria dos fluxos de trabalho de desenvolvimento baseados em contêineres começam. Muitas imagens de base compreendem distribuições Linux básicas ou mínimas (como Debian, Ubuntu, Red Hat Enterprise Linux [RHEL], Rocky Linux ou Alpine). As imagens de base são onde os arquivos do sistema de arquivos do contêiner são armazenados. O processo de criação de imagens de base (conhecido como “construção”) permite que os desenvolvedores construam um ambiente padronizado, compatível com imagens de contêineres personalizadas.
Em seguida, uma sucessão de camadas do sistema de arquivos é adicionada e empilhada sobre a imagem de base, incluindo as seguintes:
- Bibliotecas necessárias, que são coleções padrão de algoritmos e modelos de classes que os programadores podem usar para criar estruturas de dados comuns (por exemplo, listas, stacks e filas)
- Binários necessários, que são arquivos executáveis necessários para a implementação de diferentes programas e comandos. As pastas binárias são projetadas para que os usuários possam ter acesso rápido aos executáveis necessários.
- Várias dependências, que governam a criação e a operação de contêineres.
- Arquivos de configuração (configs) necessários para executar o contêiner em questão.
Para imagens de contêineres que incorporam imagens existentes, a imagem de base das imagens existentes é conhecida como imagem pai. Se uma imagem é totalmente original, diz-se que ela não tem uma imagem pai.