{"id":36772,"date":"2019-10-31T22:13:44","date_gmt":"2019-10-31T19:13:44","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ponimaya-docker\/"},"modified":"2019-10-31T22:13:44","modified_gmt":"2019-10-31T19:13:44","slug":"ponimaya-docker","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ponimaya-docker","title":{"rendered":"Compreendendo o Docker","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>H\u00e1 v\u00e1rios meses, estou usando o Docker para estruturar o processo de desenvolvimento\/entrega de projetos web. Ofere\u00e7o aos leitores do \u00abHabrHabr\u00bb a tradu\u00e7\u00e3o de um artigo introdut\u00f3rio sobre Docker \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/introduction\/understanding-docker\/\">\u00abEntendendo o Docker\u00bb<\/a><\/noindex>.<\/i><\/p>\n<h3>O que \u00e9 Docker?<\/h3>\n<p>\nDocker \u00e9 uma plataforma aberta para desenvolver, entregar e operar aplicativos. O Docker foi criado para facilitar a implanta\u00e7\u00e3o dos seus aplicativos de forma mais r\u00e1pida. Com o Docker, voc\u00ea pode separar seu aplicativo de sua infraestrutura e gerenciar a infraestrutura como um aplicativo controlado. O Docker ajuda a implantar seu c\u00f3digo mais rapidamente, testar mais rapidamente, lan\u00e7ar aplicativos e reduzir o tempo entre escrever o c\u00f3digo e execut\u00e1-lo. O Docker faz isso por meio de uma plataforma leve de virtualiza\u00e7\u00e3o de cont\u00eaineres, utilizando processos e utilit\u00e1rios que ajudam a gerenciar e implantar seus aplicativos.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEm sua ess\u00eancia, o Docker permite executar praticamente qualquer aplicativo, de forma segura e isolada em um cont\u00eainer. O isolamento seguro permite que voc\u00ea execute muitos cont\u00eaineres simultaneamente em um \u00fanico host. A leveza do cont\u00eainer, que \u00e9 executado sem a sobrecarga adicional de um hipervisor, permite que voc\u00ea extraia mais do seu hardware.<\/p>\n<p>A plataforma e as ferramentas de virtualiza\u00e7\u00e3o de cont\u00eaineres podem ser \u00fateis nas seguintes situa\u00e7\u00f5es:<\/p>\n<ul>\n<li>embalar seu aplicativo (e os componentes utilizados) em cont\u00eaineres Docker;<\/li>\n<li>distribuir e entregar esses cont\u00eaineres para suas equipes para desenvolvimento e teste;<\/li>\n<li>implantar esses cont\u00eaineres em suas produ\u00e7\u00f5es, tanto em data centers quanto em nuvens.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Para que posso usar o Docker?<\/h3>\n<p><\/p>\n<h4>Implanta\u00e7\u00e3o r\u00e1pida dos seus aplicativos<\/h4>\n<p>\nDocker \u00e9 ideal para organizar o ciclo de desenvolvimento. O Docker permite que os desenvolvedores usem cont\u00eaineres locais com aplicativos e servi\u00e7os, o que, por sua vez, permite a integra\u00e7\u00e3o com o processo de integra\u00e7\u00e3o e entrega cont\u00ednuas (continuous integration and deployment workflow).<\/p>\n<p>Por exemplo, seus desenvolvedores escrevem c\u00f3digo localmente e compartilham seu stack de desenvolvimento (conjunto de imagens Docker) com colegas. Quando est\u00e3o prontos, enviam o c\u00f3digo e os cont\u00eaineres para um ambiente de teste e executam os testes necess\u00e1rios. A partir do ambiente de teste, eles podem enviar o c\u00f3digo e as imagens para a produ\u00e7\u00e3o.<\/p>\n<h4>Implanta\u00e7\u00e3o e provisionamento mais f\u00e1ceis<\/h4>\n<p>\nA plataforma baseada em cont\u00eaineres Docker permite portabilidade f\u00e1cil da sua carga de trabalho. Cont\u00eaineres Docker podem ser executados em sua m\u00e1quina local, tanto f\u00edsica quanto virtual, em um datacenter ou na nuvem.<\/p>\n<p>A portabilidade e a leveza do Docker permitem que voc\u00ea gerencie sua carga de forma din\u00e2mica com facilidade. Voc\u00ea pode usar o Docker para implantar ou desligar seu aplicativo ou servi\u00e7os. A velocidade do Docker possibilita isso quase em tempo real.<\/p>\n<h4>Altas cargas e mais cargas \u00fateis<\/h4>\n<p>\nDocker \u00e9 leve e r\u00e1pido. Ele oferece uma alternativa est\u00e1vel e econ\u00f4mica \u00e0s m\u00e1quinas virtuais baseadas em hipervisor. \u00c9 especialmente \u00fatil em condi\u00e7\u00f5es de alta carga, como ao criar sua pr\u00f3pria nuvem ou plataforma como servi\u00e7o (platform-as-service). Mas tamb\u00e9m \u00e9 \u00fatil para aplicativos pequenos e m\u00e9dios, quando voc\u00ea deseja aproveitar melhor os recursos dispon\u00edveis.<\/p>\n<h3>Principais componentes do Docker<\/h3>\n<p>\nO Docker consiste em dois componentes principais:<\/p>\n<ul>\n<li>Docker: plataforma de virtualiza\u00e7\u00e3o de c\u00f3digo aberto;<\/li>\n<li>Docker Hub: nossa plataforma como servi\u00e7o para distribui\u00e7\u00e3o e gerenciamento de cont\u00eaineres Docker.<\/li>\n<\/ul>\n<p>\n<i>Nota! O Docker \u00e9 distribu\u00eddo sob a licen\u00e7a Apache 2.0.<\/i><\/p>\n<h3>Arquitetura do Docker<\/h3>\n<p><\/p>\n<p>O Docker utiliza uma arquitetura cliente-servidor. O cliente Docker se comunica com o daemon Docker, que assume a carga de criar, executar e distribuir seus cont\u00eaineres. Ambos, cliente e servidor podem funcionar na mesma m\u00e1quina, e voc\u00ea pode conectar o cliente a um daemon Docker remoto. O cliente e o servidor se comunicam atrav\u00e9s de um soquete ou por meio da API RESTful.<\/p>\n<p><img decoding=\"async\" alt=\"Compreendendo o Docker\" src=\"\/wp-content\/uploads\/2019\/08\/eb67e625e776737163e49a41829ed102.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Daemon Docker<\/h4>\n<p>\nComo mostrado no diagrama, o daemon \u00e9 iniciado na m\u00e1quina host. O usu\u00e1rio n\u00e3o interage diretamente com o servidor, mas utiliza o cliente para isso.<\/p>\n<h4>Cliente Docker<\/h4>\n<p>\nO cliente Docker, programa docker \u2014 \u00e9 a principal interface com o Docker. Ele recebe comandos do usu\u00e1rio e interage com o daemon Docker.<\/p>\n<h4>Dentro do Docker<\/h4>\n<p>\nPara entender do que \u00e9 feito o Docker, voc\u00ea precisa conhecer tr\u00eas componentes:<\/p>\n<ul>\n<li>imagens (images)<\/li>\n<li>registros (registries)<\/li>\n<li>containers<\/li>\n<\/ul>\n<h4>Imagens<\/h4>\n<p>\nUma imagem Docker \u00e9 um modelo somente leitura. Por exemplo, uma imagem pode conter o sistema operacional Ubuntu com Apache e um aplicativo instalado. As imagens s\u00e3o usadas para criar cont\u00eaineres. O Docker permite criar novas imagens facilmente, atualizar as existentes ou voc\u00ea pode baixar imagens criadas por outras pessoas. Imagens s\u00e3o um componente essencial do Docker.<\/p>\n<h4>Registro<\/h4>\n<p>\nO registro Docker armazena imagens. Existem registros p\u00fablicos e privados, de onde voc\u00ea pode baixar ou carregar imagens. O registro p\u00fablico do Docker \u00e9 <noindex><a rel=\"nofollow\" href=\"http:\/\/hub.docker.com\/\">Docker Hub<\/a><\/noindex>. Ele cont\u00e9m uma enorme cole\u00e7\u00e3o de imagens. Como voc\u00ea sabe, as imagens podem ser criadas por voc\u00ea ou voc\u00ea pode usar imagens criadas por outros. Registros s\u00e3o um componente de distribui\u00e7\u00e3o.<\/p>\n<h4>Cont\u00eaineres<\/h4>\n<p>\nCont\u00eaineres s\u00e3o semelhantes a diret\u00f3rios. Dentro dos cont\u00eaineres, est\u00e1 tudo o que \u00e9 necess\u00e1rio para o funcionamento do aplicativo. Cada cont\u00eainer \u00e9 criado a partir de uma imagem. Cont\u00eaineres podem ser criados, iniciados, parados, movidos ou exclu\u00eddos. Cada cont\u00eainer \u00e9 isolado e fornece uma plataforma segura para o aplicativo. Cont\u00eaineres s\u00e3o um componente operacional.<\/p>\n<h4>Como funciona o Docker?<\/h4>\n<p>\nAt\u00e9 agora, sabemos que:<\/p>\n<ul>\n<li>podemos criar imagens que cont\u00eam nossos aplicativos;<\/li>\n<li>podemos criar cont\u00eaineres a partir de imagens para executar aplicativos;<\/li>\n<li>podemos distribuir imagens atrav\u00e9s do Docker Hub ou de outro registro de imagens.<\/li>\n<\/ul>\n<p>\nVamos ver como esses componentes se combinam.<\/p>\n<h4>Como funciona uma imagem?<\/h4>\n<p>\nJ\u00e1 sabemos que uma imagem \u00e9 um modelo somente leitura do qual um cont\u00eainer \u00e9 criado. Cada imagem \u00e9 composta por um conjunto de camadas. O Docker utiliza <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/UnionFS\">sistema de arquivos unificado<\/a><\/noindex> para combinar essas camadas em uma \u00fanica imagem. O sistema de arquivos unificado permite que arquivos e diret\u00f3rios de diferentes sistemas de arquivos (ramifica\u00e7\u00f5es diferentes) se sobreponham de forma transparente, criando um sistema de arquivos coeso.<\/p>\n<p>Uma das raz\u00f5es pelas quais o Docker \u00e9 leve \u00e9 o uso dessas camadas. Quando voc\u00ea altera uma imagem, por exemplo, atualizando um aplicativo, uma nova camada \u00e9 criada. Assim, sem substituir toda a imagem ou reconstru\u00ed-la, como pode ser necess\u00e1rio com uma m\u00e1quina virtual, apenas a camada \u00e9 adicionada ou atualizada. E voc\u00ea n\u00e3o precisa distribuir toda a nova imagem, apenas a atualiza\u00e7\u00e3o \u00e9 enviada, o que facilita e acelera a distribui\u00e7\u00e3o de imagens.<\/p>\n<p>Cada imagem \u00e9 baseada em uma imagem base. Por exemplo, ubuntu, a imagem base do Ubuntu, ou fedora, a imagem base da distribui\u00e7\u00e3o Fedora. Voc\u00ea tamb\u00e9m pode usar imagens como base para criar novas imagens. Por exemplo, se voc\u00ea tem uma imagem apache, pode us\u00e1-la como imagem base para suas aplica\u00e7\u00f5es web.<\/p>\n<p><i>Nota! O Docker normalmente obt\u00e9m imagens do reposit\u00f3rio Docker Hub.<\/i><\/p>\n<p>As imagens do Docker podem ser criadas a partir dessas imagens base. Os passos de descri\u00e7\u00e3o para criar essas imagens chamamos de instru\u00e7\u00f5es. Cada instru\u00e7\u00e3o cria uma nova imagem ou camada. As instru\u00e7\u00f5es incluem as seguintes a\u00e7\u00f5es:<\/p>\n<p><\/p>\n<ul>\n<li>executar um comando<\/li>\n<li>adicionar um arquivo ou diret\u00f3rio<\/li>\n<li>criar uma vari\u00e1vel de ambiente<\/li>\n<li>indicar o que executar quando o cont\u00eainer desta imagem for iniciado<\/li>\n<\/ul>\n<p>Essas instru\u00e7\u00f5es s\u00e3o armazenadas em um arquivo <code>Dockerfile<\/code>. O Docker l\u00ea isso <code>Dockerfile<\/code>, quando voc\u00ea cria a imagem, executa essas instru\u00e7\u00f5es e retorna a imagem final.<\/p>\n<h4>Como funciona o reposit\u00f3rio docker?<\/h4>\n<p>\nUm reposit\u00f3rio \u00e9 um armazenamento de imagens Docker. Ap\u00f3s criar a imagem, voc\u00ea pode public\u00e1-la em um reposit\u00f3rio p\u00fablico Docker Hub ou em seu reposit\u00f3rio pessoal.<\/p>\n<p>Com o cliente docker, voc\u00ea pode pesquisar imagens j\u00e1 publicadas e baix\u00e1-las para sua m\u00e1quina com docker para criar cont\u00eaineres.<\/p>\n<p>O Docker Hub oferece reposit\u00f3rios de imagens p\u00fablicos e privados. A pesquisa e o download de imagens de reposit\u00f3rios p\u00fablicos est\u00e3o dispon\u00edveis para todos. O conte\u00fado de reposit\u00f3rios privados n\u00e3o aparece nos resultados de busca. Somente voc\u00ea e seus usu\u00e1rios podem acessar essas imagens e criar cont\u00eaineres a partir delas.<\/p>\n<h4>Como funciona um cont\u00eainer?<\/h4>\n<p>\nUm cont\u00eainer consiste em um sistema operacional, arquivos de usu\u00e1rio e metadados. Como sabemos, cada cont\u00eainer \u00e9 criado a partir de uma imagem. Essa imagem informa ao Docker o que est\u00e1 no cont\u00eainer, qual processo iniciar quando o cont\u00eainer \u00e9 iniciado e outros dados de configura\u00e7\u00e3o. A imagem do Docker \u00e9 somente leitura. Quando o Docker inicia um cont\u00eainer, ele cria uma camada de leitura\/grava\u00e7\u00e3o sobre a imagem (usando um sistema de arquivos union, como mencionado anteriormente), onde um aplicativo pode ser executado.<\/p>\n<h4>O que acontece quando um cont\u00eainer \u00e9 iniciado?<\/h4>\n<p>\nOu por meio de um programa <code>docker<\/code>, ou por meio da API RESTful, o cliente docker diz ao dem\u00f4nio docker para iniciar o cont\u00eainer.<\/p>\n<p><code>$ sudo docker run -i -t ubuntu \/bin\/bash<br \/>\n<\/code><br \/>\nVamos analisar este comando. O cliente \u00e9 iniciado com o comando <code>docker<\/code>, com a op\u00e7\u00e3o <code>run<\/code>, que indica que um novo cont\u00eainer ser\u00e1 iniciado. Os requisitos m\u00ednimos para iniciar o cont\u00eainer s\u00e3o os seguintes atributos:<\/p>\n<ul>\n<li>qual imagem usar para criar o cont\u00eainer. No nosso caso <code>ubuntu<\/code><\/li>\n<li>o comando que voc\u00ea deseja executar quando o cont\u00eainer for iniciado. No nosso caso <code>\/bin\/bash<\/code><\/li>\n<\/ul>\n<p>O que acontece por tr\u00e1s dos panos quando executamos esse comando?<\/p>\n<p>O Docker, em sequ\u00eancia, faz o seguinte:<\/p>\n<ul>\n<li><b>faz o download da imagem ubuntu:<\/b> o Docker verifica se a imagem <code>ubuntu<\/code> est\u00e1 presente na m\u00e1quina local e, se n\u00e3o estiver, faz o download dela de <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.docker.com\/\">Docker Hub<\/a><\/noindex>. Se a imagem j\u00e1 estiver dispon\u00edvel, utiliza-a para criar o cont\u00eainer;<\/li>\n<li><b>cria o cont\u00eainer:<\/b> quando a imagem \u00e9 obtida, o Docker a utiliza para criar o cont\u00eainer;<\/li>\n<li><b>inicializa o sistema de arquivos e monta o n\u00edvel somente leitura:<\/b> o cont\u00eainer \u00e9 criado no sistema de arquivos e o n\u00edvel somente leitura \u00e9 adicionado \u00e0 imagem;<\/li>\n<li><b>inicializa a rede\/pontes:<\/b> cria uma interface de rede que permite ao Docker se comunicar com a m\u00e1quina host;<\/li>\n<li><b>Define o endere\u00e7o IP:<\/b> encontra e atribui o endere\u00e7o;<\/li>\n<li><b>Inicia o processo especificado:<\/b> inicia seu aplicativo;<\/li>\n<li><b>Processa e exibe a sa\u00edda do seu aplicativo:<\/b> conecta e registra a entrada padr\u00e3o, sa\u00edda e fluxo de erros do seu aplicativo, para que voc\u00ea possa monitorar como seu aplicativo est\u00e1 funcionando.<\/li>\n<\/ul>\n<p>\nAgora voc\u00ea tem um cont\u00eainer funcionando. Voc\u00ea pode gerenciar seu cont\u00eainer, interagir com seu aplicativo. Quando decidir parar o aplicativo, exclua o cont\u00eainer.<\/p>\n<h3>Tecnologias utilizadas<\/h3>\n<p>\nO Docker \u00e9 escrito em Go e utiliza alguns recursos do n\u00facleo do Linux para implementar as funcionalidades mencionadas acima.<\/p>\n<h4>Espa\u00e7os de nomes (namespaces)<\/h4>\n<p>\nO Docker utiliza a tecnologia <code>namespaces<\/code> para organizar espa\u00e7os de trabalho isolados, que chamamos de cont\u00eaineres. Quando iniciamos um cont\u00eainer, o Docker cria um conjunto de espa\u00e7os de nomes para esse cont\u00eainer.<\/p>\n<p>Isso cria um n\u00edvel isolado, onde cada aspecto do cont\u00eainer \u00e9 executado em seu pr\u00f3prio espa\u00e7o de nomes e n\u00e3o tem acesso ao sistema externo.<\/p>\n<p>Lista de alguns espa\u00e7os de nomes que o Docker utiliza:<\/p>\n<ul>\n<li><b>pid:<\/b> para isolamento de processos;<\/li>\n<li><b>net:<\/b> para gerenciar interfaces de rede;<\/li>\n<li><b>ipc:<\/b> para gerenciar recursos IPC. (ICP: Comunica\u00e7\u00e3o Interprocessos);<\/li>\n<li><b>mnt:<\/b> para gerenciar pontos de montagem;<\/li>\n<li><b>utc:<\/b> para isolar o n\u00facleo e controlar a gera\u00e7\u00e3o de vers\u00f5es (UTC: sistema de tempo Unix).<\/li>\n<\/ul>\n<h4>Grupos de controle (control groups)<\/h4>\n<p>\nO Docker tamb\u00e9m utiliza a tecnologia <code>cgroups<\/code> ou grupos de controle. A chave para o funcionamento do aplicativo em isolamento \u00e9 fornecer ao aplicativo apenas os recursos que voc\u00ea deseja disponibilizar. Isso garante que os cont\u00eaineres sejam bons vizinhos. Os grupos de controle permitem dividir os recursos de hardware dispon\u00edveis e, se necess\u00e1rio, estabelecer limites e restri\u00e7\u00f5es. Por exemplo, limitar a quantidade de mem\u00f3ria dispon\u00edvel para o cont\u00eainer.<\/p>\n<h4>Sistema de Arquivo Unificado<\/h4>\n<p>\nSistema de Arquivo Unificado, ou UnionFS, \u00e9 um sistema de arquivos que funciona criando camadas, tornando-o muito leve e r\u00e1pido. O Docker utiliza o UnionFS para criar os blocos a partir dos quais o cont\u00eainer \u00e9 constru\u00eddo. O Docker pode usar v\u00e1rias vers\u00f5es do UnionFS, incluindo: AUFS, btrfs, vfs e DeviceMapper.<\/p>\n<h4>Formatos de cont\u00eainer<\/h4>\n<p>\nO Docker combina esses componentes em uma embalagem que chamamos de formato de cont\u00eainer. O formato usado por padr\u00e3o \u00e9 chamado de <code>libcontainer<\/code>. O Docker tamb\u00e9m suporta o formato tradicional de cont\u00eaineres no Linux por meio de <noindex><a rel=\"nofollow\" href=\"http:\/\/linuxcontainers.org\">LXC<\/a><\/noindex>. No futuro, o Docker poder\u00e1 suportar outros formatos de cont\u00eainer. Por exemplo, integrando-se com BSD Jails ou Solaris Zones.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/253877\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e docker \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\/\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c \u00ab\u0425\u0430\u0431\u0440\u0430\u0445\u0430\u0431\u0440\u0430\u00bb \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0432\u0432\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e docker \u2014 \u00abUnderstanding docker\u00bb. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0434\u043e\u043a\u0435\u0440? \u0414\u043e\u043a\u0435\u0440 \u2014 \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. Docker \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e docker \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442 \u0432\u0430\u0448\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36772","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e docker \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\/\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ponimaya-docker\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u043e\u043d\u0438\u043c\u0430\u044f Docker | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e docker \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\/\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ponimaya-docker\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:13:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:13:44+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Entendendo o Docker | ProHoster","description":"J\u00e1 estou usando o Docker h\u00e1 alguns meses para estruturar o processo de desenvolvimento\/entrega de projetos web.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ponimaya-docker","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u043e\u043d\u0438\u043c\u0430\u044f Docker | ProHoster","og:description":"\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e docker \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\/\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ponimaya-docker","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:13:44+00:00","article:modified_time":"2019-10-31T19:13:44+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36772","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 04:47:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:39:22","updated":"2026-01-22 04:47:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/36772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=36772"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/36772\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=36772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=36772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=36772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}