docker Flashcards
O que é o Docker?
O Docker é um projeto de software livre para automatizar a implantação de aplicativos como contêineres autossuficientes portáteis que podem ser executados na nuvem ou localmente. O Docker é também uma empresa que promove e aprimora essa tecnologia, trabalhando em colaboração com fornecedores de nuvem, do Linux e do Windows, incluindo a Microsoft.
https://learn.microsoft.com/pt-br/dotnet/architecture/microservices/container-docker-introduction/docker-defined
Vantagem 1
Uma imagem de contêiner é uma maneira de empacotar um aplicativo ou serviço e implantá-lo de maneira confiável e reproduzível. Seria possível dizer que o Docker não é apenas uma tecnologia, mas também uma filosofia e um processo.
vantagem 2
Quando usam o Docker, os desenvolvedores não dizem: “Funciona no meu computador, por que não na produção?”, eles dizem apenas: “É executado no Docker”, porque o aplicativo do Docker empacotado pode ser executado em qualquer ambiente do Docker com suporte e da maneira pretendida em todos os destinos de implantação (como desenvolvimento, garantia de qualidade, preparação e produção).
resumo
No Docker, cada camada é o conjunto resultante de alterações que ocorrem no sistema de arquivos depois de executar um comando, tal como instalar um programa.
Assim, quando você “olha” o sistema de arquivos depois que a camada é copiada, você vê todos os arquivos, incluindo a camada quando o programa foi instalado.
Você pode pensar uma imagem como um auxiliar somente leitura disco rígido pronto para ser instalado em um “computador” em que o sistema operacional já está instalado.
Da mesma forma, você pode pensar em um contêiner como o “computador” com o disco rígido de imagem instalado. O contêiner, assim como um computador, pode ser ativado ou desativado.
vantagem 2
Como os contêineres requerem muito menos recursos (por exemplo, eles não precisam de um sistema operacional completo), eles iniciam rapidamente e são fáceis de implantar. Isso permite que você tenha maior densidade, o que significa que permite a você executar mais serviços na mesma unidade de hardware, reduzindo os custos.
Desvantagem
Como um efeito colateral da execução no mesmo kernel, você obtém menos isolamento do que em VMs.
Imagem de contêiner
um pacote com todas as dependências e informações necessárias para criar um contêiner. Uma imagem inclui todas as dependências (como estruturas), além da configuração de implantação e execução a ser usada por um runtime de contêiner. Geralmente, uma imagem deriva de várias imagens base que são camadas empilhadas umas sobre as outras para formar o sistema de arquivos do contêiner. Uma imagem é imutável depois de ser criada.
Dockerfile
um arquivo de texto que contém instruções para compilar uma imagem do Docker. É como um script em lotes, a primeira linha declara a imagem base com a qual começar e, em seguida, siga as instruções para instalar os programas necessários, copiar os arquivos e assim por diante, até obter o ambiente de trabalho que precisa.
Build
a ação de criar de uma imagem de contêiner com base nas informações e no contexto fornecido pelo Dockerfile, além de arquivos adicionais na pasta em que a imagem é criada. Compile imagens com o seguinte comando do Docker:
docker build
Contêiner
uma instância de uma imagem do Docker. Um contêiner representa a execução de um único aplicativo, processo ou serviço. Consiste no conteúdo de uma imagem do Docker, um ambiente de execução e um conjunto padrão de instruções. Ao dimensionar um serviço, você cria várias instâncias de um contêiner da mesma imagem. Ou um trabalho em lotes pode criar vários contêineres da mesma imagem, passando parâmetros diferentes para cada instância.
Volumes
oferecem um sistema de arquivos gravável que o contêiner pode usar. Uma vez que as imagens são somente leitura, mas a maioria dos programas precisam gravar para o sistema de arquivos, os volumes adicionam uma camada gravável sobre a imagem de contêiner, de modo que os programas têm acesso a um sistema de arquivos gravável. O programa não sabe que está acessando um sistema de arquivos em camadas, é apenas o sistema de arquivos como de costume. Os volumes ficam no sistema de host e são gerenciados pelo Docker.
Marcação
uma marca ou um rótulo pode ser aplicado a imagens para que imagens ou versões diferentes da mesma imagem (dependendo do número de versão ou do ambiente de destino) possam ser identificadas.
Build de vários estágios
é um recurso disponível no Docker 17.05 e posteriores que ajuda a reduzir o tamanho das imagens finais. Por exemplo, uma imagem base grande, que contém o SDK, pode ser usada para compilar e publicar e, em seguida, uma pequena imagem base somente de runtime pode ser usada para hospedar o aplicativo.
Repositório
uma coleção de imagens do Docker relacionadas, rotulada com uma marcação que indica a versão da imagem. Alguns repositórios contêm diversas variantes de uma imagem específica, como uma imagem que contém o SDKs (mais pesada), uma imagem que contém somente runtimes (mais leves) etc. Estas variantes podem ser marcadas com tags. Um único repositório pode conter variantes de plataforma, como uma imagem do Linux e uma imagem do Windows.
Registro
um serviço que dá acesso aos repositórios. O registro padrão para as imagens mais públicas é o Docker Hub (propriedade da Docker como uma organização). Um registro geralmente contém repositórios de várias equipes. As empresas geralmente têm registros privados para armazenar e gerenciar as imagens que criaram. O Registro de Contêiner do Azure é outro exemplo.