{"id":18872,"date":"2018-08-22T14:04:00","date_gmt":"2018-08-22T17:04:00","guid":{"rendered":"https:\/\/king.host\/blog\/?p=18872"},"modified":"2025-09-26T14:25:05","modified_gmt":"2025-09-26T17:25:05","slug":"relato-sobre-usar-docker","status":"publish","type":"post","link":"https:\/\/king.host\/blog\/tecnologia\/relato-sobre-usar-docker\/","title":{"rendered":"Um relato sobre como usar Docker em produ\u00e7\u00e3o"},"content":{"rendered":"<p>Hoje quando <strong>o assunto \u00e9 Docker<\/strong>, basta uma simples busca no Google para descobrirmos uma enxurrada de links falando sobre o assunto, explicando o que \u00e9, como usar Docker, tutoriais mais elaborados,<strong><a href=\"https:\/\/king.host\/blog\/2018\/03\/seguranca-e-hacking-de-containers-docker\/\" target=\"_blank\" rel=\"noopener noreferrer\"> seguran\u00e7a no uso do Docker<\/a><\/strong>, <strong><a href=\"https:\/\/king.host\/blog\/2018\/03\/seguranca-e-hacking-de-containers-docker\/\" target=\"_blank\" rel=\"noopener noreferrer\">seguran\u00e7a e hacking de containers<\/a><\/strong>, etc. Mas com esse monte de refer\u00eancia as vezes ficamos at\u00e9 confusos na hora de decidir o que utilizar, qual a melhor forma de publicar seus containers, qual orquestrador utilizar, e por a\u00ed vai.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/media2.giphy.com\/media\/lNGDT0uHuvS0w\/giphy.gif\" alt=\"alien steven spielberg GIF\" title=\"\"><\/p>\n<h2>Primeiro Contato<\/h2>\n<p>Lembro bem quando um colega de trabalho me apresentou a ferramenta, com <strong>a promessa de nunca mais precisar passar horas configurando um ambiente de desenvolvimento<\/strong> antes de come\u00e7ar a de fato desenvolver.<\/p>\n<p>Esta era uma <strong>dificuldade bastante comum antes do surgimento do Docker<\/strong>. Era sempre um grande &#8220;tempo perdido&#8221; configurando ambiente quando algu\u00e9m resolvia formatar sua m\u00e1quina, ou um novo colaborador era contratado.<\/p>\n<p>Antes de usar Docker, algumas ferramentas j\u00e1 vinham tentando resolver essa quest\u00e3o, por\u00e9m possu\u00edam em geral arquivos de configura\u00e7\u00e3o bastante complexos. Isso sem falar que normalmente <strong>dependiam de uma m\u00e1quina virtual para operar<\/strong> (gerando um consumo de mem\u00f3ria desnecess\u00e1rio para o processo de desenvolvimento). Ainda assim a frase &#8220;mas funciona na minha m\u00e1quina&#8221; ainda era bastante comum de se escutar.<\/p>\n<p>Claro que demorou um pouco at\u00e9 pegar o jeito, aprender as melhores pr\u00e1ticas; como construir um <strong>Dockerfile<\/strong> bom, com o melhor aproveitamento poss\u00edvel na constru\u00e7\u00e3o das camadas da imagem, etc. Mas depois de um tempo utilizando j\u00e1 n\u00e3o restava d\u00favidas de que esta era a <strong>tecnologia que viria a suprir de vez as necessidades de depend\u00eancias no ambiente do desenvolvedor<\/strong>.<\/p>\n<h2>Usar Docker em Produ\u00e7\u00e3o<\/h2>\n<p>Ap\u00f3s um bom tempo de uso, e de j\u00e1 sentirmos seguran\u00e7a ao utilizar a ferramenta, foi a vez de dar o pr\u00f3ximo passo: <strong>usar Docker em ambiente de produ\u00e7\u00e3o<\/strong>.<\/p>\n<p>Obviamente n\u00e3o foi uma decis\u00e3o impensada e ficamos um certo tempo receosos, visto que quando tomamos esta decis\u00e3o pouco se falava sobre o assunto na Internet e <strong>poucos no Brasil<\/strong> <strong>ousavam usar Docker em ambiente produ\u00e7\u00e3o<\/strong>.<\/p>\n<p>Em 2017 fui convidado a contar um pouco sobre a experi\u00eancia que tivemos aqui na KingHost no <strong><a href=\"https:\/\/www.conexaokinghost.com.br\/?utm_source=lab&amp;utm_medium=post&amp;utm_term=&amp;utm_content=usar-docker-convite-webinar&amp;utm_campaign=content-marketing\" target=\"_blank\" rel=\"noopener noreferrer\">Conex\u00e3o KingHost<\/a><\/strong>, maior evento online e gratuito de desenvolvimento web do Brasil (<strong>cujas <a href=\"https:\/\/www.conexaokinghost.com.br\/?utm_source=lab&amp;utm_medium=post&amp;utm_term=&amp;utm_content=usar-docker-convite-webinar&amp;utm_campaign=content-marketing\" target=\"_blank\" rel=\"noopener noreferrer\">inscri\u00e7\u00f5es para a edi\u00e7\u00e3o deste ano j\u00e1<\/a><\/strong> <a href=\"https:\/\/www.conexaokinghost.com.br\/?utm_source=lab&amp;utm_medium=post&amp;utm_term=&amp;utm_content=usar-docker-convite-webinar&amp;utm_campaign=content-marketing\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>est\u00e3o abertas<\/strong><\/a>). Ao implantar a tecnologia em produ\u00e7\u00e3o, at\u00e9 teve alguns percal\u00e7os, mas gerou um conhecimento bastante interessante e que pude compartilhar com a comunidade no evento.<\/p>\n<p>Naturalmente, acostumados com ambiente de desenvolvimento, come\u00e7amos utilizando o <a href=\"https:\/\/docs.docker.com\/compose\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Docker Compose<\/strong><\/a> como orquestrador, visto que no per\u00edodo que tomamos a decis\u00e3o, n\u00e3o t\u00ednhamos muitas refer\u00eancias de orquestradores. <a href=\"https:\/\/docs.docker.com\/engine\/swarm\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Docker Swarm<\/strong><\/a> ainda era muito novo, e ainda tinha muitos problemas a serem melhorados. O <strong><a href=\"https:\/\/kubernetes.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Kubernetes<\/a><\/strong>, outra refer\u00eancia que temos hoje, tamb\u00e9m tinha seus por\u00e9ns e ainda precisava muito pra chegar na maturidade que tem hoje.<\/p>\n<p>Neste per\u00edodo experimentamos v\u00e1rias formas de publica\u00e7\u00e3o dos nossos containers at\u00e9 encontrar a melhor para o nosso caso. Algumas ainda envolviam processos manuais, outras j\u00e1 utilizando servi\u00e7os de descoberta de containers, um <a href=\"https:\/\/king.host\/blog\/2018\/07\/load-balance\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>load balance<\/strong><\/a><strong>r<\/strong> na frente, ferramentas de CI, etc.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/media0.giphy.com\/media\/26gsnVwDYSK5depi0\/giphy.gif\" alt=\"academy awards oscars GIF\" title=\"\"><\/p>\n<h2>Orquestradores de Containers<\/h2>\n<p>Implantar Docker em produ\u00e7\u00e3o pode ser realizado de v\u00e1rias maneiras. Por\u00e9m de longe <strong>a forma mais pr\u00e1tica \u00e9 a utiliza\u00e7\u00e3o de algum orquestrador de container<\/strong>, que j\u00e1 agrupa v\u00e1rias solu\u00e7\u00f5es em uma \u00fanica ferramenta.<\/p>\n<p>Voc\u00ea pode fazer todo o processo de forma manual, criando uma m\u00e1quina, entrando via SSH, rodando comandos, e colocando um load balancer em cima dessa estrutura toda. Mas <strong>hoje temos dispon\u00edveis orquestradores bastante maduros<\/strong> e com recursos que automatizam se n\u00e3o todo, boa parte do processo, facilitando a implementa\u00e7\u00e3o de um deploy cont\u00ednuo.<\/p>\n<p><strong>Os orquestradores s\u00e3o ferramentas que organizam e coordenam como ser\u00e3o executados os containers, em quais m\u00e1quina (n\u00f3s), quantas r\u00e9plicas, limita\u00e7\u00f5es de recurso, etc.\u00a0<\/strong>Em geral s\u00e3o baseados em arquivos de configura\u00e7\u00e3o, que indicam todas as peculiaridades e depend\u00eancia de uma aplica\u00e7\u00e3o. Em suma: s\u00e3o ferramentas que abstraem o conceito de m\u00e1quina simplificando o gerenciamento do ciclo de vida de seus containers.<\/p>\n<p>Para ambiente de desenvolvimento temos como refer\u00eancia quase un\u00e2nime o <strong>Docker Compose<\/strong>, que basicamente agrupa todas as depend\u00eancias da aplica\u00e7\u00e3o em apenas um arquivo de configura\u00e7\u00e3o, facilitando na hora de &#8220;subir o ambiente&#8221; para desenvolver algo. Por\u00e9m para o cen\u00e1rio de produ\u00e7\u00e3o ele <strong>possui algumas limita\u00e7\u00f5es que n\u00e3o se enquadram muito bem para a situa\u00e7\u00e3o<\/strong>.<\/p>\n<p>Para utiliza\u00e7\u00e3o em ambiente de produ\u00e7\u00e3o temos duas refer\u00eancias de orquestradores bastante difundidas atualmente. Primero temos o <strong>Docker Swarm<\/strong>, a <strong>&#8220;solu\u00e7\u00e3o oficial&#8221; da Docker<\/strong>, que desde a vers\u00e3o 1.12 j\u00e1 vem &#8220;embutido&#8221; junto do <strong>cli<\/strong>. A segunda grande refer\u00eancia atual \u00e9 o t\u00e3o aclamado <strong>Kubernetes<\/strong>, <strong>solu\u00e7\u00e3o do Google para orquestra\u00e7\u00e3o de containers<\/strong>, bastante robusta, madura e vers\u00e1til.<\/p>\n<p>Ambas as solu\u00e7\u00f5es citadas possuem pr\u00f3s e contras, e tamb\u00e9m n\u00e3o s\u00e3o as \u00fanicas op\u00e7\u00f5es de orquestra\u00e7\u00e3o dispon\u00edveis voltadas a abstrair a ger\u00eancia de ambiente de produ\u00e7\u00e3o. Mas certamente estas s\u00e3o de longe <strong>as mais discutidas e recomendadas atualmente<\/strong>.<\/p>\n<h2>Docker Swarm x Kubernetes<\/h2>\n<p>Aproveite e mate nossa curiosidade <strong>deixando nos coment\u00e1rios como foi a sua experi\u00eancia com o Docker<\/strong>. Se j\u00e1 utiliza em ambiente de produ\u00e7\u00e3o, ou at\u00e9 como voc\u00ea gerencia suas publica\u00e7\u00f5es utilizando o Docker. Fique ligado no <strong><a href=\"https:\/\/king.host\/blog\/\" target=\"_blank\" rel=\"noopener noreferrer\">Blog da KingHost<\/a><\/strong> para mais novidades.<\/p>\n<p><a href=\"https:\/\/king.host\/?utm_source=lab&amp;utm_medium=banner-artigo&amp;utm_campaign=banner-artigo-awareness-relato-sobre-usar-docker\" target=\"_blank\" rel=\"noopener\"><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone wp-image-39604 size-full\" src=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2024\/02\/banner_2.png\" alt=\"banner-kinghost\" width=\"798\" height=\"250\" title=\"\" srcset=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2024\/02\/banner_2.png 798w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2024\/02\/banner_2-300x94.png 300w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2024\/02\/banner_2-780x244.png 780w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2024\/02\/banner_2-768x241.png 768w\" sizes=\"(max-width: 798px) 100vw, 798px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoje quando o assunto \u00e9 Docker, basta uma simples busca no Google para descobrirmos uma enxurrada de links falando sobre o assunto, explicando o que \u00e9, como usar Docker, tutoriais mais elaborados, seguran\u00e7a no uso do Docker, seguran\u00e7a e hacking de containers, etc. Mas com esse monte de refer\u00eancia as vezes ficamos at\u00e9 confusos na [&hellip;]<\/p>\n","protected":false},"author":336,"featured_media":18919,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1179,8],"tags":[1376],"class_list":["post-18872","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimento","category-tecnologia","tag-desenvolvimento"],"_links":{"self":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/18872","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/users\/336"}],"replies":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/comments?post=18872"}],"version-history":[{"count":18,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/18872\/revisions"}],"predecessor-version":[{"id":42364,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/18872\/revisions\/42364"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/media\/18919"}],"wp:attachment":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/media?parent=18872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/categories?post=18872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/tags?post=18872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}