Início topics O que é o Docker? O que é o Docker?
O Docker é uma plataforma de software livre para desenvolvimento, implementação e gerenciamento de aplicativos conteinerizados
Assine a newsletter da IBM
Fundo em preto e azul
O que é o Docker?

O Docker é uma plataforma de software livre que permite aos desenvolvedores desenvolver, implementar, executar, atualizar e gerenciar componentes de contêineres executáveis e padronizados que combinam o código-fonte de aplicativos com as bibliotecas e estruturas do sistema operacional (S.O.) necessárias para executar o código em qualquer ambiente.

Os contêineres simplificam o desenvolvimento e a entrega de aplicativos distribuídos. Eles estão se tornando cada vez mais conhecidos à medida que as organizações migram para o desenvolvimento nativo de cloud e ambientes híbridos de multi-cloud.  Desenvolvedores podem criar contêineres sem o Docker, trabalhando diretamente com recursos integrados ao Linux e outros sistemas operacionais. Porém, o Docker torna o processo de conteinerização mais rápido, fácil e seguro. No momento desta publicação, o Docker relatou que mais de 13 milhões de desenvolvedores usam a plataforma (link externo à ibm.com).

Docker também se refere a Docker, Inc. (link externo à ibm.com), a empresa que vende a versão comercial do Docker, e ao projeto de software livre do Docker para o qual a Docker, Inc e muitas outras organizações e indivíduos contribuem.

Como os contêineres funcionam e por que eles são tão populares

O uso de contêineres é possível graças às capacidades de isolamento de processos e virtualização incorporadas no kernel do Linux. Essas ferramentas, como os grupos de controle (Cgroups) para alocar recursos para os processos e os namespaces para restringir o acesso ou a visibilidade de um processo a outras pessoas ou áreas do sistema, permitem que diversos componentes de aplicativos compartilhem os recursos de uma única instância do sistema operacional host da mesma forma que um hypervisor permite que várias máquinas virtuais (VMs) compartilhem a CPU, a memória e outros recursos de um único servidor de hardware. 

Como resultado, a tecnologia de contêineres oferece todas as funcionalidades e os benefícios das máquinas virtuais, incluindo isolamento de aplicativos, ajuste de escala com custo reduzido e descartabilidade, além de outras vantagens importantes:

  • Mais leve: ao contrário das VMs, os contêineres não hospedam a carga útil de uma instância inteira de sistemas operacionais e hypervisors. Estes incluem apenas os processos e as dependências do sistema operacional que são necessários para executar o código. Seu tamanho é medido em megabytes (em vez de em gigabytes, como em algumas VMs), fazem melhor uso da capacidade de hardware e oferecem tempos de inicialização mais rápidos. 

  • Melhor produtividade do desenvolvedor: aplicativos em contêineres podem ser gravados uma vez e executados em qualquer lugar. E, comparados às VMs, a implementação, o provisionamento e a reinicialização dos contêineres ocorre de maneira mais simples e rápida. Isso os torna ideais para uso em pipelines de integração contínua e entrega contínua (CI/CD) e mais adequados para equipes de desenvolvimento que adotam práticas de DevOps e Agile.

  • Maior eficiência de recursos: os contêineres permitem aos desenvolvedores executar várias vezes no mesmo hardware o mesmo número de cópias de um aplicativo que as VMs. Isso pode reduzir seus gastos com a cloud.

As empresas que utilizam os contêineres também relatam outros benefícios, como a melhora da qualidade do aplicativo, uma resposta mais rápida às mudanças do mercado, entre outros. Saiba mais por meio desta ferramenta interativa: 

Faça o download do relatório completo: contêineres na empresa (PDF, 1,4 MB)
Por que usar o Docker?

O Docker é tão utilizado atualmente que "Docker" e "contêineres" são usados como sinônimos. No entanto, as primeiras tecnologias relacionadas aos contêineres foram disponibilizadas anos ou até mesmo décadas (link externo à IBM) antes do lançamento ao público do Docker em 2013. 

Com maior destaque, em 2008, o LinuXContainers (LXC) foi implementado no kernel do Linux, iniciando a virtualização para uma única instância do Linux. Embora o LXC ainda seja usado hoje, há tecnologias mais recentes disponíveis que fazem uso do kernel do Linux. O Ubuntu, um sistema operacional Linux moderno e de software livre, também fornece esse recurso. 

O Docker permite aos desenvolvedores acessar esses recursos nativos de conteinerização usando comandos simples e automatizá-los por meio de uma interface de programação de aplicativos (API) que reduz a carga de trabalho. Comparado ao LXC, o Docker oferece:

  • Portabilidade de contêiner aprimorada e contínua: enquanto os contêineres do LXC frequentemente são usados para configurações específicas da máquina, os contêineres do Docker são executados sem modificações em nenhuma área de trabalho, data center e ambiente da cloud. 
  • Mais leve e com atualizações mais granulares: com o LXC, vários processos podem ser combinados em um único contêiner. Isso permite desenvolver um aplicativo que continua em execução enquanto uma das partes do contêiner é desativada para uma atualização ou reparo. 

     

  • Criação automatizada de contêineres: o Docker pode criar um contêiner automaticamente com base no código-fonte do aplicativo. 

     

  • Controle de versões de contêineres: o Docker pode rastrear as versões de uma imagem de contêiner, retroceder para versões anteriores e rastrear quem e como uma versão foi criada. Além disso, ele também pode fazer o upload apenas dos deltas entre uma versão existente e uma nova. 

     

  • Reutilização de contêiner: os contêineres existentes podem ser usados como imagens de base que funcionam como modelos para a criação de novos contêineres. 

     

  • Bibliotecas compartilhadas de contêineres: os desenvolvedores podem acessar um registro de software livre que contém milhares de contêineres que consistem em contribuições dos usuários. 

Hoje, a conteinerização do Docker é compatível também com o Microsoft Windows e o Apple MacOS. Os desenvolvedores podem executar contêineres do Docker em qualquer sistema operacional e os principais provedores de serviços da cloud, como o Amazon Web Services (AWS), o Microsoft Azure e a IBM Cloud oferecem serviços específicos para ajudar os desenvolvedores a projetar, implementar e executar aplicativos conteinerizados com o Docker.

Ferramentas e termos do Docker

Algumas das ferramentas, termos e tecnologias que os desenvolvedores encontram ao usar o Docker são: 

DockerFile

Todo contêiner do Docker começa com um arquivo de texto simples que contém instruções sobre como desenvolver a imagem do contêiner do Docker. O DockerFile automatiza o processo de criação de imagem do Docker. Ele consiste essencialmente em uma lista de instruções da interface da linha de comandos (CLI) que são executadas pelo Docker Engine com o intuito de montar a imagem. A lista de comandos do Docker é extensa, mas padronizada: as operações do Docker funcionam sempre da mesma forma independentemente do conteúdo, da infraestrutura ou outras variáveis de ambiente. 

Imagens do Docker

As imagens do Docker contêm um código-fonte de aplicativo executável, além de todas as ferramentas, bibliotecas e estrutura que esse código precisa para ser executado como um contêiner. Ao executar a imagem do Docker, ela se torna uma instância (ou várias instâncias) do contêiner. 

É possível realizar a criação completa de uma imagem do Docker, mas a maioria dos desenvolvedores as extrai de repositórios comuns. Várias imagens do Docker podem ser criadas por meio de uma única imagem de base, compartilhando as mesmas características da solução que as engloba. 

As imagens do Docker são compostas de camadas que correspondem individualmente a uma versão da imagem. Sempre que um desenvolvedor faz mudanças na imagem, uma nova camada superior é criada, substituindo a anterior pela versão atual da imagem. As camadas anteriores são salvas caso seja necessário retroceder para versões anteriores ou reutilização em outros projetos. 

Sempre que um contêiner é criado por meio de uma imagem do Docker, é criada mais uma camada chamada de "camada de contêiner". As mudanças feitas no contêiner, como a inclusão ou exclusão de arquivos, são salvas apenas na camada do contêiner e existem apenas enquanto ele está em execução. Esse processo iterativo de criação de imagem possibilita o aumento da eficiência geral, pois diversas instâncias do contêiner em tempo real podem ser executadas por meio de uma única imagem de base. Quando isso acontece, elas potencializam o uso de uma solução comum. 

Contêineres do Docker

Os contêineres do Docker são as instâncias ativas e em execução das imagens do Docker. Enquanto as imagens do Docker consistem em arquivos somente leitura, os contêineres representam um conteúdo em tempo real, temporário e executável. Os usuários podem interagir com elas e os administradores podem ajustar suas configurações e condições usando comandos do Docker. 

Docker Hub

O Docker Hub (link externo à ibm.com) é o repositório público de imagens do Docker que se autodenomina a "maior biblioteca e comunidade do mundo para imagens de contêineres". Ele contém mais de 100.000 imagens de contêineres extraídas de fornecedores de software comercial, projetos de software livre e desenvolvedores. Ele inclui imagens produzidas pela Docker, Inc. e imagens certificadas que pertencem ao registro confiável do Docker, além de milhares de outras imagens. 

Todos os usuários do Docker Hub podem compartilhar suas imagens à vontade. Eles também podem fazer o download de imagens de base predefinidas do sistema de arquivos do Docker para usar como ponto de partida para qualquer projeto de conteinerização. 

Existem outros repositórios de imagens, como o GitHub. O GitHub é um serviço de hospedagem de repositório, conhecido pelas ferramentas de desenvolvimento de aplicativos e como uma plataforma que promove a colaboração e a comunicação. Os usuários do Docker Hub podem criar um repositório (repo) para armazenar muitas imagens. O repositório pode ser público ou privado e pode ser vinculado a contas GitHub ou BitBucket. 

Docker Desktop

O Docker Desktop (link externo à ibm.com) é um aplicativo para Mac ou Windows que inclui Docker Engine, cliente Docker CLI, Docker Compose, Kubernetes e outros. Também inclui acesso ao Docker Hub. 

Daemon do Docker

O Daemon do Docker é um serviço que cria e gerencia imagens do Docker, usando os comandos do cliente. Essencialmente, o daemon do Docker serve como o centro de controle da sua implementação do Docker. O servidor no qual o daemon do Docker é executado é chamado de host do Docker.

Registro do Docker

Um registro do Docker é um sistema escalável de armazenamento e distribuição de software livre para imagens do Docker. Ele permite rastrear versões de imagens em repositórios com a identificação por meio de tags. Para isso, ele usa o git, uma ferramenta de controle de versão. 

Implementação e orquestração do Docker

Se você estiver executando poucos contêineres, será bastante simples gerenciar seu aplicativo no Docker Engine que oferece o melhor tempo de execução do mercado.  No entanto, se sua implementação for composta por milhares de contêineres e centenas de serviços, será praticamente impossível gerenciar este fluxo de trabalho sem a ajuda destas ferramentas especializadas.

Plug-ins do Docker

Os plug-ins do Docker (link externo à ibm.com) podem ser usados para aumentar a funcionalidade do Docker.Vários plug-ins do Docker estão incluídos no sistema de plug-ins do Docker Engine e plug-ins de outras empresas também são compatíveis. 

Docker Compose

Os desenvolvedores podem usar o Docker Compose para gerenciar aplicativos de vários contêineres se esses contêineres forem executados no mesmo host do Docker. O Docker Compose cria um arquivo YAML (.YML) que especifica quais serviços serão incluídos no aplicativo e pode implementar e executar contêineres com um único comando. Como a sintaxe YAML não depende de linguagem, os arquivos YAML podem ser usados em programas baseados em Java, Python, Ruby e muitas outras linguagens. 

Os desenvolvedores também podem usar o Docker Compose para definir volumes persistentes para área de armazenamento, especificar nós de base e documentar e configurar estruturas de serviço. 

Kubernetes

O monitoramento e o gerenciamento de ciclo de vida de contêineres em ambientes mais complexos requer uma ferramenta de orquestração de contêineres.  Embora o Docker tenha sua própria ferramenta de orquestração (chamada Docker Swarm), a maioria dos desenvolvedores prefere usar o Kubernetes. 

O Kubernetes é uma plataforma de software livre para a orquestração de contêineres proveniente de um projeto desenvolvido para uso interno da Google. O Kubernetes planeja e automatiza tarefas essenciais ao gerenciamento de arquiteturas baseadas em contêiner, incluindo implementação de contêineres, atualizações, descoberta de serviços, provisionamento de armazenamento,  balanceamento de carga, monitoramento de funcionamento e muito mais. Além disso, o ecossistema de software livre de ferramentas para o Kubernetes, incluindo o Istio e o Knative, permite que as empresas implementem uma plataforma como serviço (PaaS) de alta produtividade para aplicativos conteinerizados e oferecem uma vantagem para a serverless computing.

Saiba mais sobre o Kubernetes

Soluções relacionadas
Red Hat® OpenShift on IBM Cloud

O Red Hat OpenShift on IBM Cloud potencializa o OpenShift em ambientes públicos e híbridos para obter velocidade, resposta de mercado, ajuste de escala e confiabilidade.

Conheça o Red Hat OpenShift on IBM Cloud
IBM® Cloud Satellite

Com o IBM® Cloud Satellite, é possível lançar serviços da cloud consistentes em qualquer lugar, localmente, na borda e em ambientes da cloud publica.

Conheça o IBM® Cloud Satellite
Soluções de armazenamento na cloud híbrida

Armazene dados no local mais adequado para aplicativos e serviços com as soluções de armazenamento na cloud híbrida da IBM, no local, privada e pública.

Conheça as soluções de armazenamento na cloud híbrida
Serviços da cloud

Veja como uma abordagem de serviços gerenciados na cloud ajuda a reduzir possíveis problemas entre o gerenciamento da estrutura de TI existente e a introdução à cultura DevOps.

Saiba mais sobre os serviços da cloud
Recursos Contêineres na empresa

Uma nova pesquisa da IBM documenta a expansão atual da adoção de contêineres e do Kubernetes.

Disponibilize modelos no Kubernetes ou OpenShift usando contêineres independentes

Crie uma imagem de contêineres independentes para aplicar modelos de NLP do Watson e, em seguida, executá-los em um cluster do Kubernetes ou Red Hat OpenShift

Dê o próximo passo

Uma plataforma corporativa de contêineres fornece orquestração em várias cloud públicas e privadas, a fim de unificar seus ambientes para oferecer melhor desempenho de negócios e operacional. Ela representa um componente importante de uma estratégia da cloud híbrida aberta que evita a dependência de fornecedores, cria e executa cargas de trabalho em qualquer lugar com consistência e otimiza e moderniza toda a sua estrutura de TI. Implemente clusters Kubernetes altamente disponíveis e totalmente gerenciados com o Red Hat OpenShift on IBM Cloud, um serviço OpenShift gerenciado que utiliza a segurança e a escala corporativas da IBM Cloud para automatizar atualizações, ajustes de escala e fornecimento.

Conheça o Red Hat® OpenShift on IBM Cloud