{"id":940,"date":"2017-03-30T16:40:36","date_gmt":"2017-03-30T19:40:36","guid":{"rendered":"http:\/\/coral.ufsm.br\/pet-si\/?p=940"},"modified":"2025-09-02T13:41:38","modified_gmt":"2025-09-02T16:41:38","slug":"o-docker-e-seus-containers-a-nova-era-da-virtualizacao","status":"publish","type":"post","link":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/2017\/03\/30\/o-docker-e-seus-containers-a-nova-era-da-virtualizacao","title":{"rendered":"O Docker e seus containers: a nova era da virtualiza\u00e7\u00e3o!"},"content":{"rendered":"<p><span style=\"font-weight: 400\">O <\/span><b>PET-SI <\/b><span style=\"font-weight: 400\">est\u00e1 a todo vapor em 2017! E como prova disso, viemos lhes trazer, quentinho do forno, mais uma edi\u00e7\u00e3o do nosso j\u00e1 amado <\/span><b>PET-Reda\u00e7\u00e3o<\/b><span style=\"font-weight: 400\">. Nesta edi\u00e7\u00e3o, falaremos sobre o <\/span><b>Docker<\/b><span style=\"font-weight: 400\">, o ambiente de virtualiza\u00e7\u00e3o que mais tem ganhado adeptos ao redor mundo!<\/span><!--more--><br \/>\n<img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-941 alignnone\" src=\"http:\/\/coral.ufsm.br\/pet-si\/wp-content\/uploads\/2017\/03\/large_h-1024x352.png\" alt=\"\" width=\"632\" height=\"217\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2017\/03\/large_h-1024x352.png 1024w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2017\/03\/large_h-300x103.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2017\/03\/large_h-768x264.png 768w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2017\/03\/large_h-1536x528.png 1536w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2017\/03\/large_h.png 1667w\" sizes=\"(max-width: 632px) 100vw, 632px\" \/><br \/>\n<span style=\"font-weight: 400\">O <\/span><b>Docker<\/b><span style=\"font-weight: 400\"> \u00e9 uma plataforma de virtualiza\u00e7\u00e3o Open Source escrita na linguagem Go (linguagem de alto desempenho criada pela Google) e mantida pela <\/span><b>Docker Inc<\/b><span style=\"font-weight: 400\"> (empresa localizada na Calif\u00f3rnia &#8211; EUA), que permite a cria\u00e7\u00e3o e administra\u00e7\u00e3o de ambientes isolados hospedados em um sistema operacional (SO). A plataforma, permite que seja encapsulado uma aplica\u00e7\u00e3o ou, at\u00e9 mesmo um sistema operacional inteiro dentro desses ambientes, que s\u00e3o chamados de <\/span><b>containers<\/b><span style=\"font-weight: 400\">. Partindo de arquivos de defini\u00e7\u00e3o chamados <\/span><b>dockerfiles<\/b><span style=\"font-weight: 400\"> (explicado melhor posteriormente) ainda \u00e9 poss\u00edvel criar imagens de um <\/span><b>container<\/b><span style=\"font-weight: 400\">, podendo replicar a mesma configura\u00e7\u00e3o de um <\/span><b>container<\/b><span style=\"font-weight: 400\"> em qualquer outro host que tenha o <\/span><b>Docker<\/b><span style=\"font-weight: 400\"> instalado.<\/span><br \/>\n<span style=\"font-weight: 400\">Uma das maiores vantagens no uso do <\/span><b>Docker<\/b><span style=\"font-weight: 400\">, \u00e9 o desempenho superior frente \u00e0s m\u00e1quinas virtuais com <\/span><i><span style=\"font-weight: 400\">hypervisor<\/span><\/i><span style=\"font-weight: 400\">. Enquanto nas m\u00e1quinas virtuais comuns, existe um SO inteiro, com suas rotinas de bibliotecas e parte do kernel simuladas em sobre um hardware artificial, o <\/span><b>Docker<\/b><span style=\"font-weight: 400\"> compartilha, quando poss\u00edvel, essas estruturas com o SO hospedeiro, resultando em um grande ganho no desempenho da virtualiza\u00e7\u00e3o e acarretando em <\/span><b>containers<\/b><span style=\"font-weight: 400\"> excepcionalmente leves. Falando de forma grosseira, a diferen\u00e7a \u00e9 b\u00e1sica: enquanto as vms simulam o hardware, os <\/span><b>containers<\/b><span style=\"font-weight: 400\"> simulam o SO.<\/span><br \/>\n<span style=\"font-weight: 400\">A imagem abaixo mostra de forma mais simples as diferen\u00e7as de estruturas entre vm comum e o <strong>Docker<\/strong>.<\/span><br \/>\n<img decoding=\"async\" class=\"wp-image-943 alignnone aligncenter\" src=\"http:\/\/coral.ufsm.br\/pet-si\/wp-content\/uploads\/2017\/03\/img_docker.png\" alt=\"\" width=\"587\" height=\"218\" \/><br \/>\n<span style=\"font-weight: 400\">Sendo \u201cfilho\u201d do <\/span><b>Linux Containers <\/b><span style=\"font-weight: 400\">(LXC), o <\/span><b>Docker<\/b><span style=\"font-weight: 400\"> consegue utilizar recursos como <\/span><b>namespaces<\/b><span style=\"font-weight: 400\">, <\/span><b>cgroups<\/b><span style=\"font-weight: 400\"> e <\/span><b>chroot<\/b><span style=\"font-weight: 400\"> de seu pai para solidificar a sua proposta. Utilizado os <\/span><b>namespaces<\/b><span style=\"font-weight: 400\">, o <\/span><b>Docker<\/b><span style=\"font-weight: 400\"> garante a cria\u00e7\u00e3o de um ambiente pr\u00f3prio, podendo a partir de ent\u00e3o, utilizar o <\/span><b>chroot<\/b><span style=\"font-weight: 400\"> para isolar esse ambiente do resto do sistema e, por fim, garante com o <\/span><b>cgroups<\/b><span style=\"font-weight: 400\"> os recursos como CPU, mem\u00f3ria, I\/O de disco e rede para o ambiente. Abusando dessa arquitetura, o <\/span><b>Docker<\/b><span style=\"font-weight: 400\"> consegue criar <\/span><b>containers<\/b><span style=\"font-weight: 400\"> leves, isolados e prontos para serem gerenciados de forma independente e transparente aos demais vizinhos.<\/span><br \/>\n<span style=\"font-weight: 400\">Para a defini\u00e7\u00e3o da imagem de um <\/span><b>container<\/b><span style=\"font-weight: 400\">, s\u00e3o os <\/span><b>dockerfiles<\/b><span style=\"font-weight: 400\"> que aparecem! Os <\/span><b>dockerfiles<\/b><span style=\"font-weight: 400\"> s\u00e3o arquivos de compila\u00e7\u00e3o que definem a estrutura de um <\/span><b>container<\/b><span style=\"font-weight: 400\"> a partir de um ponto pr\u00e9-estabelecido. Com um <\/span><b>dockerfile<\/b><span style=\"font-weight: 400\"> bem definido, o erro humano na hora de cria\u00e7\u00e3o da imagem pode ser minimizando, sendo necess\u00e1rio apenas a execu\u00e7\u00e3o do arquivo. Um exemplo de <\/span><b>dockerfile<\/b><span style=\"font-weight: 400\"> pode ser visualizado <\/span><a href=\"https:\/\/docs.docker.com\/engine\/examples\/postgresql_service\/#installing-postgresql-on-docker\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">aqui<\/span><\/a><span style=\"font-weight: 400\">, nesse exemplo, \u00e9 feito a instala\u00e7\u00e3o do PostgreSQL no <\/span><b>Docker<\/b><span style=\"font-weight: 400\">, um trecho do arquivo pode ser visto abaixo.<\/span><br \/>\n<img decoding=\"async\" class=\"wp-image-944 alignnone aligncenter\" src=\"http:\/\/coral.ufsm.br\/pet-si\/wp-content\/uploads\/2017\/03\/dockerfile.png\" alt=\"\" width=\"534\" height=\"405\" \/><br \/>\n<span style=\"font-weight: 400\">A <\/span><b>Docker Inc.<\/b><span style=\"font-weight: 400\"> mant\u00e9m um reposit\u00f3rio onde usu\u00e1rios podem compartilhar suas imagens para <\/span><b>containers<\/b><span style=\"font-weight: 400\">, o website pode ser acessado <\/span><a href=\"https:\/\/hub.docker.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">aqui<\/span><\/a><span style=\"font-weight: 400\">. No reposit\u00f3rio, existem os mais diversos tipos de imagens que v\u00e3o desde imagens focadas em virtualizar um SGBD, at\u00e9 virtualiza\u00e7\u00e3o de ferramentas como o Apache Hadoop, para o processamento de grandes conjuntos de dados.<\/span><br \/>\n<span style=\"font-weight: 400\">Com ascens\u00e3o destac\u00e1vel na ind\u00fastria desde 2015, o <\/span><b>Docker<\/b><span style=\"font-weight: 400\"> vem amplamente substituindo vms, j\u00e1 sendo utilizado por gigantes da TI como a Google, Amazon e at\u00e9 mesmo a Microsoft, que recentemente criou implementa\u00e7\u00f5es de extens\u00e3o para a Azure executar o \u00a0<\/span><b>Docker<\/b><span style=\"font-weight: 400\">. Tamb\u00e9m \u00e9 utilizado por empresas de streaming como Spotify e Netflix. <\/span><br \/>\n<span style=\"font-weight: 400\">O crescimento demasiado do uso da ferramenta levou a Datadog (empresa especializada em ger\u00eancia em TI) a analisar informa\u00e7\u00f5es sobre ado\u00e7\u00e3o da ferramenta em ambientes de produ\u00e7\u00e3o, a pesquisa ficou interessante e explana 8 fatos surpreendentes sobre essa ades\u00e3o da ferramenta, a investiga\u00e7\u00e3o pode ser encontrada nesse <\/span><a href=\"https:\/\/www.datadoghq.com\/docker-adoption\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">link<\/span><\/a><span style=\"font-weight: 400\">.<\/span><br \/>\n<span style=\"font-weight: 400\">Para instalar o ambiente, \u00e9 necess\u00e1rio fazer o download a partir dos reposit\u00f3rios oficiais do <\/span><b>Docker<\/b><span style=\"font-weight: 400\"> para a sua distribui\u00e7\u00e3o (caso use Linux) ou, fazer download de alguma vers\u00e3o no site oficial da ferramenta (para MAC e Windows).<\/span><br \/>\n<span style=\"font-weight: 400\">Alguns comandos interessantes:<\/span><\/p>\n<h5><b>Build de uma imagem<\/b><\/h5>\n<blockquote><p><span style=\"font-weight: 400\">docker build -t &lt;nome_da_imagem&gt; &lt;caminho_para_dockerfile&gt;<\/span><\/p><\/blockquote>\n<h5><b>Executar um container<\/b><\/h5>\n<blockquote><p><span style=\"font-weight: 400\">docker run -d -p &lt;porta_host&gt;:&lt;porta_container&gt; &#8211;name &lt;nome_container&gt; &lt;nome_imagem&gt;\u00a0<\/span><\/p><\/blockquote>\n<h5><b>Iniciar uma sess\u00e3o bash em um container que esteja rodando<\/b><\/h5>\n<blockquote><p><span style=\"font-weight: 400\">docker exec -it &lt;nome_container&gt; bash<\/span><\/p><\/blockquote>\n<h5><b>Ver os logs de um container<\/b><\/h5>\n<blockquote><p><span style=\"font-weight: 400\">docker logs &lt;nome_container&gt;<\/span><\/p><\/blockquote>\n<h5><b>Ver todas as imagens no host<\/b><\/h5>\n<blockquote><p><span style=\"font-weight: 400\">docker images<\/span><\/p><\/blockquote>\n<h5><b>Ver todos os containers<\/b><\/h5>\n<blockquote><p><span style=\"font-weight: 400\">docker ps -a \u00a0<\/span><\/p><\/blockquote>\n<h5><b>Remover um container<\/b><\/h5>\n<blockquote><p><span style=\"font-weight: 400\">docker rm -f &lt;nome_container&gt; \u00a0<\/span><\/p><\/blockquote>\n<h5><b>Remover TODOS os containers<\/b><\/h5>\n<blockquote><p><span style=\"font-weight: 400\">docker rm -f $(docker ps -a -q) \u00a0<\/span><\/p><\/blockquote>\n<h5><b>Remover uma imagem<\/b><\/h5>\n<blockquote><p><span style=\"font-weight: 400\">docker rmi -f &lt;nome_imagem&gt;<\/span><\/p><\/blockquote>\n<p><span style=\"font-weight: 400\">Assim, com versatilidade e flexibilidade, o <\/span><b>Docker <\/b><span style=\"font-weight: 400\">e seus <\/span><b>containers<\/b><span style=\"font-weight: 400\"> v\u00eam ganhando fi\u00e9is ao redor do mundo. Trazendo uma nova forma de virtualiza\u00e7\u00e3o, o mesmo consegue ter um desempenho melhor frente \u00e0s vms convencionais, o que acaba lhe tornando a nova febre no mundo das virtualiza\u00e7\u00f5es.<\/span><\/p>\n<h3><b>Refer\u00eancias e Links \u00fateis<\/b><\/h3>\n<p><span style=\"font-weight: 400\">1 &#8211; <\/span><b>Docker<\/b><span style=\"font-weight: 400\"> &#8211; <\/span><a href=\"https:\/\/www.docker.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">Docker Inc.<\/span><\/a><a href=\"https:\/\/www.docker.com\/\"><br \/>\n<\/a><br \/>\n<span style=\"font-weight: 400\">2 &#8211; <\/span><b>mundoDocker <\/b><span style=\"font-weight: 400\">&#8211; <\/span><a href=\"http:\/\/www.mundodocker.com.br\/o-que-e-docker\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">O que \u00e9 Docker?<\/span><\/a><br \/>\n<span style=\"font-weight: 400\">3 &#8211; <\/span><b>DigitalOcean <\/b><span style=\"font-weight: 400\">&#8211; <\/span><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/o-ecossistema-do-docker-uma-visao-geral-da-conteinerizacao-pt\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">O Ecossistema do Docker: Uma Vis\u00e3o geral da Conteineriza\u00e7\u00e3o!<\/span><\/a><br \/>\n<span style=\"font-weight: 400\">4 &#8211; <\/span><b>Hub <\/b><span style=\"font-weight: 400\">&#8211; <\/span><span style=\"font-weight: 400\"><a href=\"https:\/\/hub.docker.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker Hub<\/a>.<\/span><br \/>\n<span style=\"font-weight: 400\">5 &#8211; <\/span><b>Getup <\/b><span style=\"font-weight: 400\">&#8211; <\/span><a href=\"https:\/\/blog.getupcloud.com\/docker-docker-docker-e-a%C3%AD-quais-os-benef%C3%ADcios-9ec111c0615a\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">Docker Docker Docker\u200a\u2014\u200aE a\u00ed, quais os benef\u00edcios?<\/span><\/a><br \/>\n<span style=\"font-weight: 400\">6 &#8211; <\/span><b>Datadog <\/b><span style=\"font-weight: 400\">&#8211; <\/span><span style=\"font-weight: 400\"><a href=\"https:\/\/www.datadoghq.com\/docker-adoption\/\" target=\"_blank\" rel=\"noopener noreferrer\">8 Surprising facts about real Docker adoption<\/a>.<\/span><\/p>\n<h2>Avalia\u00e7\u00e3o<\/h2>\n<p>Antes de voc\u00ea partir gostaria de pedir sua ajuda para avaliar nossa atividade, \u00e9 com sua colabora\u00e7\u00e3o que o grupo PET-SI vai melhorar ainda mais os conte\u00fados aqui abordados. Por favor, preencha o formul\u00e1rio neste <a href=\"https:\/\/goo.gl\/forms\/QvbTq4FLdeaBELkJ2\" target=\"_blank\" rel=\"noopener noreferrer\">LINK<\/a> e nos ajude &lt;3<\/p>\n<h2>Reda\u00e7\u00f5es Anteriores<\/h2>\n<h4>1 \u2013 <a href=\"http:\/\/coral.ufsm.br\/pet-si\/index.php\/uma-introducao-aos-conceitos-e-utilizacao-do-big-data\/\">Uma Introdu\u00e7\u00e3o aos Conceitos e Utiliza\u00e7\u00e3o do Big Data<\/a><\/h4>\n<h4>0 \u2013 <a href=\"http:\/\/coral.ufsm.br\/pet-si\/index.php\/porque-utilizar-o-sublime-text\/\">Por que utilizar o Sublime Text?<\/a><\/h4>\n","protected":false},"excerpt":{"rendered":"<p>O PET-SI est\u00e1 a todo vapor em 2017! E como prova disso, viemos lhes trazer, quentinho do forno, mais uma edi\u00e7\u00e3o do nosso j\u00e1 amado PET-Reda\u00e7\u00e3o. Nesta edi\u00e7\u00e3o, falaremos sobre o Docker, o ambiente de virtualiza\u00e7\u00e3o que mais tem ganhado adeptos ao redor mundo!<\/p>\n","protected":false},"author":25,"featured_media":942,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124,112],"tags":[188,149],"class_list":["post-940","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-destaques","category-redacao","tag-infra-devops-e-nuvem","tag-redacao"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/posts\/940","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/comments?post=940"}],"version-history":[{"count":0,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/posts\/940\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/media\/942"}],"wp:attachment":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/media?parent=940"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/categories?post=940"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/tags?post=940"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}