O que é o Docker?


O Docker permite criar, implementar e gerir containers de aplicações virtuais. Lançada em 2013, esta tecnologia rapidamente se impôs no mundo da programação, permitindo aos programadores trabalhar com uma flexibilidade e portabilidade sem precedentes. Saiba mais sobre o Docker neste artigo.

Serveur advance

O que é um container?

O Docker é hoje tão popular que os termos «Docker» e «containers» já costumam ser usados de forma permutável. No entanto, as tecnologias relacionadas com os containers estavam disponíveis há anos, senão mesmo décadas, antes de o Docker se tornar acessível ao público em 2013.

Mas vamos diretos ao assunto: o que é o Docker? O Docker é uma plataforma de software open-source utilizada para criar, implementar e gerir containers de aplicações virtualizadas num SO (Sistema Operativo) comum. Inclui também um ecossistema de ferramentas associadas.

A tecnologia de containers Docker foi lançada em 2013. Na época, a Docker Inc. foi criada para promover uma edição comercial do software de gestão de containers e ser o principal patrocinador de uma versão open-source.

O Docker oferece aos programadores de software um meio mais rápido e eficaz para desenvolver e testarpartes conteinerizadas de uma aplicação de software global. Assim, podem desenvolver simultaneamente vários programas.

Cada container contém todos os elementos necessários ao desenvolvimento de um componente de software e garante que este seja facilmente desenvolvido, testado e implementado. O Docker permite a portabilidade quando estes packaged containers são transferidos para diferentes servidores ou ambientes.

  • Um elemento central do Docker é a utilização de imagens Docker, ficheiros imutáveis que contêm todos os elementos necessários à execução de uma aplicação, o que facilita a implementação e a distribuição das aplicações em vários ambientes informáticos.

Como funciona o Docker?

O Docker condiciona, abastece e executa containers. Esta tecnologia está disponível através do SO: um container «embala» o serviço ou a função da aplicação com todas as bibliotecas, os ficheiros de configuração, as dependências e os outros elementos e parâmetros necessários ao seu funcionamento.

Cada container partilha os serviços de um único SO subjacente. As imagens Docker contêm todas as dependências requeridas à execução do código no interior de um container, de forma que este possa passar de um ambiente Docker para outro com o mesmo SO e ser executado de forma inalterada.

O Docker usa o isolamento dos recursos no núcleo do SO para executar vários containers nesse mesmo sistema. Isso difere de uma máquina virtual (MV), que encapsula todo um sistema operativo com código executável sobre uma camada abstrata de recursos físicos.

O Docker foi inicialmente criado para funcionar na plataforma Linux, mas o seu campo de aplicação alargou-se de forma a oferecer um melhor suporte para outros SO. Microsoft Windows e Apple OS X são alguns exemplos. Existem versões do Docker para Amazon Web Services (AWS) e Microsoft Azure.

Vantagens do Docker

Eis as principais vantagens do Docker:

Isolamento de aplicações leves:

O Docker utiliza containers leves para garantir um isolamento eficaz entre as aplicações e as suas dependências. Assim, cada programa é executado de modo autónomo e coerente, sem interferir com os outros.

Icons/concept/Cloud/Cloud Hand Created with Sketch.

Portabilidade das aplicações entre diferentes ambientes:

As instâncias conteinerizadas encapsulam a aplicação e as suas dependências, o que facilita a sua implementação em diferentes máquinas, quer se trate de servidores locais, de MV ou de containers cloud, sem que haja preocupações com diferenças de ambiente.

Simplificação do processo de criação, distribuição e implementação:

O Docker permite criar imagens conteinerizadas de aplicações e distribui-las através dos registos Docker.

Icons/concept/Cloud/Cloud Infinity Created with Sketch.

Melhoria da produtividade dos programadores graças à normalização dos ambientes de programação:

O Docker possibilita que os programadores trabalhem em ambientes coerentes. Assim, cada membro da equipa dispõe das mesmas dependências e configurações de software, o que reduz os problemas de compatibilidade entre várias versões.

Ciclos de programação mais rápidos:

Graças à portabilidade dos containers Docker e à facilidade com que podem ser implementados. Isto permite desenvolver, testar e implementar programas mais rapidamente.

Icons/concept/Graph Created with Sketch.

Simplificação da evolução das aplicações:

O Docker simplifica a escalabilidade das aplicações, pois podem ser instantaneamente implementados novos containers para responder a uma procura crescente. Assim, trata-se de uma solução flexível e eficaz para a gestão de cargas de trabalho variáveis.

Otimização dos recursos e redução dos custos da infraestrutura:

O hardware pode ser partilhado de forma mais eficaz, o que reduz os custos da infraestrutura.

Promove a colaboração:

Os containers Docker garantem uma reprodutibilidade completa do ambiente de desenvolvimento, o que facilita a colaboração entre os programadores, ao mesmo tempo que garante que todos possam trabalhar num ambiente coerente e isolado.

Docker vs. máquinas virtuais

Uma máquina virtual (MV) é uma emulação software de um sistema informático físico que é executado num ambiente informático host. Ela fica isolada deste sistema, o que garante que o software da MV não afeta o sistema principal.

As MV são geralmente utilizadas para tarefas como o acesso a dados infetados por vírus, o teste de sistemas operativos e a criação de backups. São constituídas por vários ficheiros, nomeadamente os ficheiros logs, as configurações NVRAM, os ficheiros de discos virtuais e os ficheiros de configuração.

As MV são igualmente usadas na virtualização dos servidores, em que um servidor físico é dividido em vários servidores isolados, com cada um a executar o seu SO de forma independente.

Existem dois tipos de MV: as MV de sistemas, que permitem que várias MV partilhem recursos físicos através de um hipervisor, e as MV de processos. Em conjunto, proporcionam um ambiente de programação independente da plataforma.

Docker vs. máquinas virtuais: principais diferenças

Eis as principais diferenças entre o Docker e as MV.

Compatibilidade do SO e da sua arquitetura

A principal diferença entre o Docker e as MV reside na sua arquitetura. As MV incluem um SO host e um SO convidado. Um sistema operativo convidado pode ser qualquer SO, como Linux ou Windows, independentemente do SO principal.


As instâncias conteinerizadas são, por sua vez, alojadas num único servidor físico com um sistema operativo partilhado entre si. A partilha do SO host entre os containers torna-os mais leves e aumenta o tempo de arranque.


Os containers Docker adaptam-se melhor à execução de vários programas num único kernel de sistema operativo, ao passo que as MV são necessárias se os serviços tiverem de ser executados em diferentes SO.

Nível de segurança fornecido

A segunda diferença entre as MV e o Docker é que as máquinas virtuais são autónomas com o seu kernel e as suas funcionalidades de segurança. Assim, as aplicações que requerem mais privilégios e segurança são executadas em máquinas virtuais.


Por outro lado, não é recomendável fornecer acesso root às aplicações e executá-las com locais administrativos no caso das instâncias conteinerizadas, pois elas partilham o kernel do host. A tecnologia Docker tem acesso aos subsistemas do kernel. Isto significa que uma aplicação infetada pode atacar todo o sistema host.

Grau de portabilidade

Outra diferença importante entre o Docker e as máquinas virtuais diz respeito à portabilidade: as máquinas virtuais ficam isoladas dos seus SO e não podem, portanto, ser transportadas para várias plataformas sem causar problemas de compatibilidade.


Ao nível da programação, se uma aplicação deve ser testada em diferentes plataformas, é preciso considerar os containers Docker. Estes são autónomos e podem executar aplicações em qualquer ambiente.


Como não necessitam de um SO convidado, podem ser facilmente transportados para diferentes plataformas. Os containers Docker são passíveis de ser implementados nos servidores, pois os containers são leves. Isto significa que podem ser ligados e desligados em menos tempo do que as máquinas virtuais.

Nível de desempenho

A última diferença entre o Docker e as máquinas virtuais diz respeito ao desempenho: os containers Docker são menos exigentes em recursos, pois as máquinas virtuais devem carregar o conjunto do sistema operativo para iniciar.


No caso de uma máquina virtual, recursos como a unidade central, a memória e as entradas/saídas podem não ser atribuídos em permanência aos containers, ao contrário de um container Docker. Os recursos são então utilizados em função do tráfego.


A escalabilidade e a duplicação de um container Docker são simples e fáceis em comparação com uma máquina virtual, pois não é necessário instalar um sistema operativo.

Usos do Docker

Embora seja tecnicamente possível usar o Docker para desenvolver e difundir qualquer tipo de aplicação de software, ele é sobretudo útil para realizar as seguintes tarefas:

Programação de aplicações

Ao combinar o Docker com boas práticas DevOps, as aplicações em containers podem ser implementadas em alguns segundos, ao contrário das grandes aplicações monolíticas tradicionais, que levam muito mais tempo.

As atualizações ou modificações ao código de uma aplicação são aplicadas e implementadas rapidamente quando se utilizam containers no âmbito de um pipeline mais amplo de integração contínua.

Gestão de aplicações através de um formato de imagem padronizado

O formato de imagem padronizado e portátil do Docker simplifica a gestão das aplicações ao encapsular todas as dependências e configurações necessárias numa única imagem. Isso garante consistência e reprodutibilidade em diferentes ambientes informáticos.

Assim, poderá programar, empacotar e difundir aplicações de forma transparente em qualquer plataforma compatível com o Docker.

Desenvolvimento de uma arquitetura baseada em microsserviços

O Docker é ideal para o processo de criação de uma arquitetura baseada em microsserviços. Esta última revela-se mais vantajosa do que um programa tradicional. Pode criar e implementar vários microsserviços, cada um num container próprio. De seguida, basta integrá-los para montar um programa completo por meio de uma ferramenta de orquestração de containers.

  • Os microsserviços são uma abordagem arquitetónica e organizacional ao desenvolvimento de programas em que o software é composto por pequenos serviços independentes que comunicam através de API bem definidas. Estes serviços pertencem a pequenas equipas autónomas.

Migração de programas existentes para uma infraestrutura conteinerizada

Uma equipa de programação que deseje modernizar um programa existente pode usar o Docker para migrar a aplicação para uma infraestrutura conteinerizada.

Implementação de soluções de cloud híbrida e multicloud

Os containers Docker funcionam todos da mesma forma, quer sejam implementados localmente ou utilizem o cloud computing. Assim, o Docker permite migrar facilmente as aplicações para os ambientes de produção e de teste de vários fornecedores de cloud computing.

Um programa Docker que use várias ofertas cloud pode ser considerado uma cloud híbrida ou multicloud. As empresas também podem tirar partido de serviços de containers cloud, como o Kubernetes, que fornecem plataformas de gestão e orquestração para containers em ambientes cloud.

  • O Kubernetes-as-a-Service (KaaS) permite adotar uma abordagem simples para implementar e gerir os clusters Kubernetes sem que seja preciso gerir a infraestrutura subjacente. As equipas de programação podem assim concentrar-se na criação e na manutenção das aplicações, e não na gestão da infraestrutura.

A conteinerização com o Docker facilita a criação, a distribuição e a implementação de aplicações, encapsulando-as a elas e às suas dependências em containers leves. As imagens Docker servem de modelos para criar containers Docker, oferecendo uma maneira eficaz e reprodutível de gerir as aplicações e os seus ambientes de execução.

A OVHcloud e o Docker

Serviço Managed Kubernetes® gratuito para orquestrar os seus containers

Kubernetes® é o orquestrador de containers de referência do setor. Utilizado por empresas de todos os tamanhos, facilita a implementação, a resiliência e a escalabilidade das suas aplicações, mesmo em infraestruturas híbridas ou multicloud.

O serviço Managed Kubernetes® baseia-se nas instâncias Public Cloud da OVHcloud. Com os repartidores de carga da OVHcloud e os discos adicionais integrados, poderá alojar qualquer tipo de carga de trabalho com uma reversibilidade total.

Orchestration

Perguntas frequentes

Qual é a utilidade de um Docker?

O Docker é uma ferramenta de virtualização leve que lhe permite criar, gerir e executar containers. Esta solução eficiente possibilita criar e implementar aplicações em vários ambientes informáticos. A sua utilidade reside na capacidade de fornecer um ambiente coerente e isolado para as aplicações, facilitando a sua conceção, distribuição e execução.

O que é um container Docker?

Um container Docker é uma unidade de execução leve e autónoma que encapsula um programa e as suas dependências, o que permite implementá-la e executá-la em vários ambientes informáticos de forma coerente. Os containers Docker utilizam as funcionalidades de virtualização do SO host para isolar as aplicações umas das outras, partilhando eficazmente os recursos do sistema.

Porquê instalar um Docker ?

A instalação do Docker permite-lhe beneficiar das vantagens da virtualização ligeira e da gestão de containers. Graças a ela, é possível criar, testar e implementar software em vários ambientes informáticos, garantindo simultaneamente a coerência e a portabilidade das aplicações.

Quais são as vantagens e as desvantagens da utilização do Docker?

As vantagens do uso do Docker incluem o isolamento das aplicações, uma melhor portabilidade, a simplificação do processo de criação e implantação do software, a melhoria da produtividade dos programadores, a facilitação da colaboração e a otimização do sistema. As potenciais desvantagens estão relacionadas com a complexidade de configuração, com a gestão das imagens e containers, e com a possibilidade de problemas de segurança associados à utilização de containers partilhados.