{"id":27426,"date":"2024-12-07T21:23:49","date_gmt":"2024-12-08T00:23:49","guid":{"rendered":"https:\/\/a3aengenharia.com\/?post_type=blog&#038;p=27426"},"modified":"2025-08-04T15:55:33","modified_gmt":"2025-08-04T18:55:33","slug":"docker","status":"publish","type":"articles","link":"https:\/\/a3aengenharia.com\/en-us\/content\/technical-articles\/docker\/","title":{"rendered":"O que \u00e9 Docker?"},"content":{"rendered":"\n<p>O <strong>Docker<\/strong> \u00e9 uma plataforma de <a href=\"https:\/\/a3aengenharia.com\/glossario\/\" target=\"_blank\" rel=\"noreferrer noopener\">c\u00f3digo aberto<\/a> (<em>open source<\/em>) que utiliza a tecnologia de <strong>containers<\/strong> para simplificar o desenvolvimento, a implanta\u00e7\u00e3o e a execu\u00e7\u00e3o de aplica\u00e7\u00f5es em ambientes computacionais isolados.<\/p>\n\n\n\n<p>Neste artigo, vamos entender o que \u00e9 um container, os principais conceitos relacionados a <strong>Docker<\/strong> e o impacto que essa plataforma tem no desenvolvimento de softwares e na hospedagem de sistemas.<\/p>\n\n\n\n<p>Confira!<\/p>\n\n\n<p>[elementor-template id=&#8221;24446&#8243;]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"margin-right:0;margin-bottom:var(--wp--preset--spacing--40)\">O que \u00e9 um Container?<\/h2>\n\n\n\n<p>Um Container \u00e9 uma forma de <a href=\"https:\/\/a3aengenharia.com\/glossario\/\">virtualiza\u00e7\u00e3o<\/a> em <strong>n\u00edvel de sistema operacional<\/strong>.<\/p>\n\n\n\n<p>Diferentemente da virtualiza\u00e7\u00e3o por <em><a href=\"https:\/\/a3aengenharia.com\/glossario\/\" target=\"_blank\" rel=\"noreferrer noopener\">hipervisor<\/a><\/em> (ex: VMware e Virtual Box) que cria m\u00e1quinas virtuais completas com sistemas operacionais totalmente independentes, containers compartilham o <a href=\"https:\/\/a3aengenharia.com\/glossario\/\">kernel<\/a> do sistema operacional do host, permitindo que m\u00faltiplas inst\u00e2ncias isoladas do espa\u00e7o de usu\u00e1rio sejam executadas no mesmo ambiente.<\/p>\n\n\n\n<p>Plataformas como o Docker reduzem drasticamente o <em><a href=\"https:\/\/a3aengenharia.com\/glossario\/\" target=\"_blank\" rel=\"noreferrer noopener\">overhead<\/a><\/em> de recursos e podem acelerar o tempo de inicializa\u00e7\u00e3o em compara\u00e7\u00e3o com m\u00e1quinas virtuais.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/containerizacao.jpeg\" alt=\"\" class=\"wp-image-28152\" style=\"width:500px\" srcset=\"https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/containerizacao.jpeg 1024w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/containerizacao-300x300.jpeg 300w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/containerizacao-100x100.jpeg 100w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/containerizacao-600x600.jpeg 600w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/containerizacao-64x64.jpeg 64w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/containerizacao-512x512.jpeg 512w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/containerizacao-150x150.jpeg 150w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/containerizacao-768x768.jpeg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Diagrama representativo sobre a conteineriza\u00e7\u00e3o.<br>Fonte: <a href=\"https:\/\/dockerbook.com\/\" target=\"_blank\">The Docker Book | James Turnbull<\/a><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--40)\">Para que serve o Docker?<\/h2>\n\n\n\n<p>O Docker \u00e9 uma ferramenta poderosa que oferece isolamento por meio de <strong>containers<\/strong>.<\/p>\n\n\n\n<p>Os containers criam ambientes computacionais isolados para testes e servem como &#8220;blocos de constru\u00e7\u00e3o&#8221; consistentes e reutiliz\u00e1veis para servi\u00e7os.<\/p>\n\n\n\n<p>Aqui est\u00e3o alguns exemplos de como o Docker pode ser utilizado:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ambiente de Testes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Desenvolvedores podem criar, executar e compartilhar containers Docker em seus ambientes locais.<\/li>\n\n\n\n<li>Containers constru\u00eddos no ambiente de desenvolvimento podem ser promovidos para testes e, posteriormente, para produ\u00e7\u00e3o, garantindo consist\u00eancia entre os est\u00e1gios.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Self-Hosting<\/h3>\n\n\n\n<p>Execu\u00e7\u00e3o de servi\u00e7os e aplica\u00e7\u00f5es independentes<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Permite rodar servi\u00e7os e aplica\u00e7\u00f5es de forma consistente em diferentes ambientes.<\/li>\n\n\n\n<li>Ideal para arquiteturas orientadas a servi\u00e7os e implanta\u00e7\u00f5es baseadas em microservi\u00e7os.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Desenvolvimento de Aplica\u00e7\u00f5es<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Implanta\u00e7\u00f5es de Alta Performance<\/h3>\n\n\n\n<p>Testes isolados em integra\u00e7\u00f5es cont\u00ednuas (CI)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ferramentas como Jenkins CI utilizam o Docker para criar inst\u00e2ncias isoladas para execu\u00e7\u00e3o de testes.<\/li>\n\n\n\n<li>Reduz o risco de interfer\u00eancias entre testes e melhora a confiabilidade do processo de CI.<\/li>\n<\/ul>\n\n\n\n<p>Constru\u00e7\u00e3o e teste de arquiteturas complexas<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Permite replicar e testar aplica\u00e7\u00f5es complexas em um host local antes de implant\u00e1-las em ambientes de produ\u00e7\u00e3o.<\/li>\n<\/ul>\n\n\n\n<p>Cria\u00e7\u00e3o de infraestruturas multiusu\u00e1rio no estilo Platform-as-a-Service (PaaS)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Docker pode ser a base para construir plataformas que suportam m\u00faltiplos usu\u00e1rios e servi\u00e7os.<\/li>\n<\/ul>\n\n\n\n<p>Ambientes leves e independentes para aprendizado e desenvolvimento<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ideal para criar sandboxes isolados para:<\/li>\n\n\n\n<li>Testar tecnologias como shells Unix.<\/li>\n\n\n\n<li>Aprender e ensinar linguagens de programa\u00e7\u00e3o.<\/li>\n\n\n\n<li>Realizar experimentos sem impactar o sistema principal.<\/li>\n<\/ul>\n\n\n\n<p>Aplica\u00e7\u00f5es SaaS (Software como Servi\u00e7o)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Docker pode ser utilizado para criar e implantar aplica\u00e7\u00f5es SaaS, permitindo gerenciamento eficiente e escalabilidade.<\/li>\n<\/ul>\n\n\n\n<p>Implanta\u00e7\u00f5es de alta performance e hiperescal\u00e1veis<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Containers s\u00e3o extremamente leves, permitindo que m\u00faltiplos hosts sejam configurados rapidamente para atender a demandas em grande escala.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--40)\">Como funciona o Docker?<\/h2>\n\n\n\n<p>O Docker introduz um mecanismo de implanta\u00e7\u00e3o de aplica\u00e7\u00f5es sobre um ambiente de execu\u00e7\u00e3o baseado em containers virtualizados.<\/p>\n\n\n\n<p>Esse mecanismo proporciona um fluxo de trabalho eficiente que facilita a transi\u00e7\u00e3o do c\u00f3digo do ambiente de desenvolvimento local para o ambiente de testes e para a produ\u00e7\u00e3o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--30)\">Arquitetura Docker<\/h3>\n\n\n\n<p>O Docker utiliza uma arquitetura baseada no modelo cliente-servidor.<\/p>\n\n\n\n<p>O <strong>cliente Docker<\/strong> se comunica com o <strong>servidor docker (daemon)<\/strong>, respons\u00e1vel por realizar as opera\u00e7\u00f5es mais complexas, como criar, executar e distribuir cont\u00eaineres Docker.<\/p>\n\n\n\n<p>O cliente e o daemon Docker podem ser executados no mesmo sistema ou de forma remota, onde o cliente se conecta a um daemon localizado em outra m\u00e1quina.<\/p>\n\n\n\n<p>A comunica\u00e7\u00e3o entre cliente e daemon utiliza uma <strong>API REST<\/strong>, que pode operar via UNIX sockets ou interfaces de rede.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1233\" height=\"651\" src=\"https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/docker-architecture.webp\" alt=\"\" class=\"wp-image-28183\" style=\"object-fit:cover\" srcset=\"https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/docker-architecture.webp 1233w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/docker-architecture-600x317.webp 600w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/docker-architecture-64x34.webp 64w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/docker-architecture-512x270.webp 512w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/docker-architecture-1024x541.webp 1024w, https:\/\/a3aengenharia.com\/wp-content\/uploads\/2024\/12\/docker-architecture-768x405.webp 768w\" sizes=\"auto, (max-width: 1233px) 100vw, 1233px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--30)\">Cliente Docker<\/h4>\n\n\n\n<p>O <strong>cliente Docker<\/strong> (<code>docker<\/code>) \u00e9 a principal interface utilizada pelos usu\u00e1rios para interagir com o Docker.<\/p>\n\n\n\n<p>Quando voc\u00ea executa comandos como <code>docker run<\/code>, o cliente envia essas instru\u00e7\u00f5es ao daemon (<code>dockerd<\/code>), que as executa.<\/p>\n\n\n\n<p>O cliente Docker utiliza a <strong>API Docker<\/strong> e \u00e9 capaz de se conectar a v\u00e1rios daemons simultaneamente.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--30)\">Servidor Docker (Daemon)<\/h4>\n\n\n\n<p>O <strong>daemon Docker<\/strong> (<code>dockerd<\/code>) escuta requisi\u00e7\u00f5es da <strong>API Docker<\/strong> e gerencia objetos do Docker, como imagens, cont\u00eaineres, redes e volumes.<\/p>\n\n\n\n<p>Al\u00e9m disso, o daemon pode se comunicar com outros daemons para gerenciar servi\u00e7os Docker em um ambiente distribu\u00eddo.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--30)\">Objetos Docker<\/h4>\n\n\n\n<p>Ao utilizar o Docker, voc\u00ea estar\u00e1 criando e manipulando objetos como <strong>imagens<\/strong>, <strong>cont\u00eaineres<\/strong>, <strong>redes<\/strong>, <strong>volumes<\/strong>, <strong>plugins<\/strong> e outros.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--30)\">Imagens<\/h5>\n\n\n\n<p>Uma <strong>imagem<\/strong> \u00e9 um modelo de leitura (read-only) com instru\u00e7\u00f5es para criar um cont\u00eainer Docker.<\/p>\n\n\n\n<p>Geralmente, uma imagem \u00e9 baseada em outra imagem existente, com algumas personaliza\u00e7\u00f5es. Por exemplo, \u00e9 poss\u00edvel criar uma imagem baseada na imagem <code>ubuntu<\/code>, adicionando o servidor web Apache, a aplica\u00e7\u00e3o que voc\u00ea deseja executar e as configura\u00e7\u00f5es necess\u00e1rias para que ela funcione.<\/p>\n\n\n\n<p>Voc\u00ea pode criar suas pr\u00f3prias imagens ou usar aquelas disponibilizadas por outros usu\u00e1rios em registros p\u00fablicos.<\/p>\n\n\n\n<p>Para construir uma imagem, \u00e9 necess\u00e1rio criar um arquivo <strong>Dockerfile<\/strong>.<\/p>\n\n\n\n<p>O Dockerfile utiliza uma sintaxe simples para definir os passos necess\u00e1rios para criar e executar a imagem.<\/p>\n\n\n\n<p>Cada instru\u00e7\u00e3o no Dockerfile gera uma camada na imagem.<\/p>\n\n\n\n<p>Ao modificar o Dockerfile e reconstruir a imagem, apenas as camadas alteradas s\u00e3o recriadas. Isso torna as imagens leves, pequenas e r\u00e1pidas, especialmente em compara\u00e7\u00e3o com outras tecnologias de virtualiza\u00e7\u00e3o.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--30)\">Containers<\/h5>\n\n\n\n<p>Um <strong>cont\u00eainer<\/strong> \u00e9 uma inst\u00e2ncia execut\u00e1vel de uma imagem.<\/p>\n\n\n\n<p>\u00c9 poss\u00edvel criar, iniciar, parar, mover ou excluir um cont\u00eainer utilizando a <strong>API Docker<\/strong> ou o <strong>Docker CLI<\/strong>.<\/p>\n\n\n\n<p>Voc\u00ea tamb\u00e9m pode conectar um cont\u00eainer a uma ou mais redes, anexar armazenamento ou criar uma nova imagem com base no estado atual do cont\u00eainer.<\/p>\n\n\n\n<p>Por padr\u00e3o, os cont\u00eaineres s\u00e3o bem isolados uns dos outros e do sistema anfitri\u00e3o (host). \u00c9 poss\u00edvel configurar o n\u00edvel de isolamento de redes, armazenamento e outros subsistemas, dependendo das necessidades.<\/p>\n\n\n\n<p>Um cont\u00eainer \u00e9 definido pela sua imagem e pelas op\u00e7\u00f5es de configura\u00e7\u00e3o fornecidas ao cri\u00e1-lo ou inici\u00e1-lo.<\/p>\n\n\n\n<p>Quando um cont\u00eainer \u00e9 removido, qualquer altera\u00e7\u00e3o no seu estado que n\u00e3o esteja armazenada em um volume persistente ser\u00e1 perdida.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" style=\"margin-bottom:var(--wp--preset--spacing--30)\">Registros<\/h4>\n\n\n\n<p>Um <strong>registro Docker<\/strong> armazena imagens Docker.<\/p>\n\n\n\n<p>O <strong>Docker Hub<\/strong> \u00e9 um registro p\u00fablico padr\u00e3o, dispon\u00edvel para qualquer usu\u00e1rio, onde o Docker busca imagens por padr\u00e3o.<\/p>\n\n\n\n<p>Al\u00e9m disso, \u00e9 poss\u00edvel configurar e operar um registro privado.<\/p>\n\n\n\n<p>Comandos como <code>docker pull<\/code> ou <code>docker run<\/code> fazem com que o Docker baixe as imagens necess\u00e1rias do registro configurado.<\/p>\n\n\n\n<p>Por outro lado, o comando <code>docker push<\/code> permite enviar suas imagens para o registro configurado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Instalando o Docker<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n","protected":false},"excerpt":{"rendered":"<p>O Docker \u00e9 uma plataforma de c\u00f3digo aberto (open source) que utiliza a tecnologia de containers para simplificar o desenvolvimento, a implanta\u00e7\u00e3o e a execu\u00e7\u00e3o de aplica\u00e7\u00f5es em ambientes computacionais isolados. Neste artigo, vamos entender o que \u00e9 um container, os principais conceitos relacionados a Docker e o impacto que essa plataforma tem no desenvolvimento [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":27944,"parent":0,"template":"","categories":[334],"class_list":["post-27426","articles","type-articles","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/a3aengenharia.com\/en-us\/wp-json\/wp\/v2\/articles\/27426","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/a3aengenharia.com\/en-us\/wp-json\/wp\/v2\/articles"}],"about":[{"href":"https:\/\/a3aengenharia.com\/en-us\/wp-json\/wp\/v2\/types\/articles"}],"author":[{"embeddable":true,"href":"https:\/\/a3aengenharia.com\/en-us\/wp-json\/wp\/v2\/users\/4"}],"version-history":[{"count":1,"href":"https:\/\/a3aengenharia.com\/en-us\/wp-json\/wp\/v2\/articles\/27426\/revisions"}],"predecessor-version":[{"id":31982,"href":"https:\/\/a3aengenharia.com\/en-us\/wp-json\/wp\/v2\/articles\/27426\/revisions\/31982"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/a3aengenharia.com\/en-us\/wp-json\/wp\/v2\/media\/27944"}],"wp:attachment":[{"href":"https:\/\/a3aengenharia.com\/en-us\/wp-json\/wp\/v2\/media?parent=27426"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/a3aengenharia.com\/en-us\/wp-json\/wp\/v2\/categories?post=27426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}