{"id":32873,"date":"2019-10-31T21:49:25","date_gmt":"2019-10-31T18:49:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/izuchaem-docker-chast-6-rabota-s-dannymi\/"},"modified":"2019-10-31T21:49:25","modified_gmt":"2019-10-31T18:49:25","slug":"izuchaem-docker-chast-6-rabota-s-dannymi","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi","title":{"rendered":"Aprendendo Docker, parte 6: trabalhando com dados","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Na parte de hoje da s\u00e9rie de tradu\u00e7\u00f5es sobre Docker, vamos falar sobre trabalho com dados. Em particular, sobre volumes do Docker. Nestes materiais, constantemente comparamos os mecanismos do Docker com diversas analogias alimentares. Vamos manter essa tradi\u00e7\u00e3o aqui tamb\u00e9m. Os dados no Docker podem ser considerados como especiarias. No mundo existem muitos tipos de especiarias, assim como no Docker existem v\u00e1rias maneiras de trabalhar com dados.<\/p>\n<p>\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/438796\/\">Parte 1: fundamentos<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/439978\/\">Parte 2: termos e conceitos<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/439980\/\">Parte 3: arquivos Dockerfile<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/440658\/\">Parte 4: redu\u00e7\u00e3o do tamanho das imagens e acelera\u00e7\u00e3o da constru\u00e7\u00e3o<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/440660\/\">Parte 5: comandos<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/441574\/\">Parte 6: trabalho com dados<\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/441574\/\"><img decoding=\"async\" alt=\"Aprendendo Docker, parte 6: trabalhando com dados\" src=\"\/wp-content\/uploads\/2019\/05\/b46a9525df1a3ed70d8e2625fbfd42f6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nObserve que este material foi elaborado usando o motor Docker vers\u00e3o 18.09.1 e a vers\u00e3o da API <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/engine\/api\/version-history\/\">1.39<\/a><\/noindex>.<\/p>\n<p>Os dados no Docker podem ser armazenados temporariamente ou permanentemente. Vamos come\u00e7ar com dados tempor\u00e1rios.<\/p>\n<h2>Armazenamento tempor\u00e1rio de dados<\/h2>\n<p>\nDentro dos cont\u00eaineres Docker, \u00e9 poss\u00edvel organizar o trabalho com dados tempor\u00e1rios de duas maneiras.<\/p>\n<p>Por padr\u00e3o, os arquivos criados por uma aplica\u00e7\u00e3o em execu\u00e7\u00e3o dentro do cont\u00eainer s\u00e3o salvos na camada do cont\u00eainer que suporta grava\u00e7\u00e3o. Para que esse mecanismo funcione, n\u00e3o \u00e9 necess\u00e1rio configurar nada especial. Isso resulta em uma solu\u00e7\u00e3o simples e eficiente. A aplica\u00e7\u00e3o pode simplesmente salvar os dados e continuar com suas tarefas. No entanto, assim que o cont\u00eainer deixar de existir, os dados salvos dessa maneira tamb\u00e9m desaparecer\u00e3o.<\/p>\n<p>Para armazenar arquivos tempor\u00e1rios no Docker, \u00e9 poss\u00edvel usar mais uma solu\u00e7\u00e3o, adequada para situa\u00e7\u00f5es que requerem um n\u00edvel de desempenho mais alto do que o que pode ser alcan\u00e7ado com o mecanismo padr\u00e3o de armazenamento tempor\u00e1rio de dados. Se voc\u00ea n\u00e3o precisa que seus dados sejam armazenados por mais tempo do que a vida do cont\u00eainer, pode anexar ao cont\u00eainer um tmpfs \u2014 um armazenamento tempor\u00e1rio que utiliza a mem\u00f3ria RAM do host. Isso permite acelerar as opera\u00e7\u00f5es de leitura e grava\u00e7\u00e3o de dados.<\/p>\n<p>Com frequ\u00eancia, \u00e9 necess\u00e1rio armazenar dados mesmo ap\u00f3s o cont\u00eainer deixar de existir. Para isso, precisaremos dos mecanismos de armazenamento permanente de dados.<\/p>\n<h2>Armazenamento permanente de dados<\/h2>\n<p>\nExistem duas maneiras de prolongar a vida \u00fatil dos dados al\u00e9m da vida \u00fatil do cont\u00eainer. Uma delas envolve o uso da tecnologia de bind mount. Com essa abordagem, \u00e9 poss\u00edvel montar, por exemplo, uma pasta que j\u00e1 existe. Os processos fora do Docker poder\u00e3o trabalhar com os dados armazenados nessa pasta. Veja como <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/volumes\/\">parece<\/a><\/noindex> a montagem do tmpfs e a tecnologia do bind mount.<\/p>\n<p><img decoding=\"async\" alt=\"Aprendendo Docker, parte 6: trabalhando com dados\" src=\"\/wp-content\/uploads\/2019\/05\/73b9b7fd59b1321edb9f58953285d8d5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Montagem do tmpfs e bind mount<\/i><\/p>\n<p>As desvantagens do uso da t\u00e9cnica de bind mount incluem a complexidade no backup de dados, migra\u00e7\u00e3o de dados e compartilhamento de dados entre v\u00e1rios cont\u00eaineres. \u00c9 muito melhor utilizar volumes Docker para armazenamento permanente de dados.<\/p>\n<h2>Volumes Docker<\/h2>\n<p>\nUm volume \u00e9 um sistema de arquivos que est\u00e1 localizado na m\u00e1quina host fora dos cont\u00eaineres. Os volumes s\u00e3o criados e geridos pelo Docker. Aqui est\u00e3o as principais caracter\u00edsticas dos volumes Docker:<\/p>\n<ul>\n<li>Eles servem como meios para o armazenamento permanente de informa\u00e7\u00f5es.<\/li>\n<li>Eles s\u00e3o independentes e separados dos cont\u00eaineres.<\/li>\n<li>Podem ser compartilhados por diferentes cont\u00eaineres.<\/li>\n<li>Eles permitem organizar a leitura e grava\u00e7\u00e3o de dados de forma eficiente.<\/li>\n<li>Os volumes podem ser alocados em recursos de um provedor de nuvem remoto.<\/li>\n<li>Podem ser criptografados.<\/li>\n<li>Podem receber nomes.<\/li>\n<li>Um cont\u00eainer pode pr\u00e9-preencher um volume com dados.<\/li>\n<li>Eles s\u00e3o convenientes para testes.<\/li>\n<\/ul>\n<p>\nComo voc\u00ea pode ver, os volumes Docker possuem caracter\u00edsticas not\u00e1veis. Vamos falar sobre como cri\u00e1-los.<\/p>\n<h2>Cria\u00e7\u00e3o de volumes<\/h2>\n<p>\nOs volumes podem ser criados usando ferramentas do Docker ou atrav\u00e9s de solicita\u00e7\u00f5es \u00e0 API.<\/p>\n<p>Aqui est\u00e1 uma instru\u00e7\u00e3o no Dockerfile que permite criar um volume ao iniciar um cont\u00eainer.<\/p>\n<pre><code class=\"plaintext\">VOLUME \/my_volume<\/code><\/pre>\n<p>\nAo usar essa instru\u00e7\u00e3o no Docker, ap\u00f3s a cria\u00e7\u00e3o do cont\u00eainer, um volume ser\u00e1 criado contendo os dados que j\u00e1 est\u00e3o no local especificado. Note que ao criar um volume usando o Dockerfile, isso n\u00e3o isenta voc\u00ea de precisar especificar o ponto de montagem do volume.<\/p>\n<p>\u00c9 poss\u00edvel criar volumes no Dockerfile usando o formato JSON.<\/p>\n<p>Al\u00e9m disso, volumes podem ser criados usando a linha de comando durante a opera\u00e7\u00e3o do cont\u00eainer.<\/p>\n<h2>Trabalhando com volumes pela linha de comando<\/h2>\n<p><\/p>\n<h3>\u258dCria\u00e7\u00e3o de um volume<\/h3>\n<p>\nPara criar um volume independente, use o seguinte comando:<\/p>\n<pre><code class=\"plaintext\">docker volume create --name my_volume<\/code><\/pre>\n<p><\/p>\n<h3>\u258dVerificando informa\u00e7\u00f5es sobre volumes<\/h3>\n<p>\nPara visualizar a lista de volumes do Docker, use o seguinte comando:<\/p>\n<pre><code class=\"plaintext\">docker volume ls<\/code><\/pre>\n<p>\nPara explorar um volume espec\u00edfico, voc\u00ea pode fazer assim:<\/p>\n<pre><code class=\"plaintext\">docker volume inspect my_volume<\/code><\/pre>\n<p><\/p>\n<h3>\u258dRemo\u00e7\u00e3o de volume<\/h3>\n<p>\nVoc\u00ea pode remover um volume assim:<\/p>\n<pre><code class=\"plaintext\">docker volume rm my_volume<\/code><\/pre>\n<p>\nPara remover todos os volumes que n\u00e3o est\u00e3o sendo utilizados por cont\u00eaineres, voc\u00ea pode usar o seguinte comando:<\/p>\n<pre><code class=\"plaintext\">docker volume prune<\/code><\/pre>\n<p>\nAntes de remover volumes, o Docker solicitar\u00e1 sua confirma\u00e7\u00e3o para executar esta opera\u00e7\u00e3o.<\/p>\n<p>Se um volume estiver associado a algum cont\u00eainer, este volume n\u00e3o pode ser removido at\u00e9 que o cont\u00eainer correspondente seja exclu\u00eddo. Al\u00e9m disso, mesmo que o cont\u00eainer tenha sido removido, o Docker nem sempre reconhece isso. Se isso acontecer, voc\u00ea pode usar o seguinte comando:<\/p>\n<pre><code class=\"plaintext\">docker system prune<\/code><\/pre>\n<p>\nEste comando \u00e9 destinado a limpar recursos do Docker. Ap\u00f3s a execu\u00e7\u00e3o deste comando, voc\u00ea deve ter a possibilidade de remover volumes cujos status foram determinadamente reportados como incorretos.<\/p>\n<h2>Flags \u2014mount e \u2014volume<\/h2>\n<p>\nAo trabalhar com volumes, frequentemente voc\u00ea precisar\u00e1 usar as flags ao invocar o comando. <code>docker<\/code>Por exemplo, para criar um volume durante a cria\u00e7\u00e3o do cont\u00eainer, voc\u00ea pode usar a seguinte constru\u00e7\u00e3o:<\/p>\n<pre><code class=\"plaintext\">docker container run --mount source=my_volume, target=\/container\/path\/for\/volume my_image<\/code><\/pre>\n<p>\nAntigamente (antes de 2017), a flag <code>--volume<\/code>era popular. Originalmente, essa flag (que ainda pode ser usada na forma abreviada; nesse caso, aparece como <code>-v<\/code>) era utilizada para cont\u00eaineres aut\u00f4nomos, enquanto a flag <code>--mount<\/code> era usada no ambiente Docker Swarm. No entanto, a partir do Docker 17.06, a flag <code>--mount<\/code> pode ser usada em quaisquer cen\u00e1rios.<\/p>\n<p>\u00c9 importante ressaltar que ao usar a flag <code>--mount<\/code> a quantidade de dados adicionais a serem especificados no comando aumenta, mas, por v\u00e1rias raz\u00f5es, \u00e9 melhor usar essa flag em vez de <code>--volume<\/code>. A flag <code>--mount<\/code> \u2014 \u00e9 o \u00fanico mecanismo que permite trabalhar com servi\u00e7os ou especificar par\u00e2metros do driver de volume. Al\u00e9m disso, \u00e9 mais f\u00e1cil trabalhar com essa flag.<\/p>\n<p>Nos exemplos existentes de comandos voltados para trabalhar com dados no Docker, voc\u00ea pode encontrar muitos exemplos do uso da flag <code>-v<\/code>. Ao tentar adaptar esses comandos para sua situa\u00e7\u00e3o, leve em considera\u00e7\u00e3o que as flags <code>--mount<\/code> e <code>--volume<\/code> usam diferentes formatos de par\u00e2metros. Ou seja, n\u00e3o \u00e9 poss\u00edvel simplesmente substituir <code>-v<\/code> para <code>--mount<\/code> e obter um comando funcionante.<\/p>\n<p>A principal diferen\u00e7a entre <code>--mount<\/code> e <code>--volume<\/code> \u00e9 que ao usar a flag <code>--volume<\/code> todos os par\u00e2metros s\u00e3o agrupados juntos, em um \u00fanico campo, enquanto ao usar <code>--mount<\/code> os par\u00e2metros s\u00e3o separados.<\/p>\n<p>Ao trabalhar com <code>--mount<\/code> os par\u00e2metros s\u00e3o representados como pares de chave-valor, ou seja, isso parece com <code>chave=valor<\/code>. Esses pares s\u00e3o separados por v\u00edrgulas. Aqui est\u00e3o os par\u00e2metros frequentemente usados <code>--mount<\/code>:<\/p>\n<ul>\n<li><code>tipo<\/code> \u2014 tipo de montagem. O valor para a chave correspondente pode ser <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/bind-mounts\/\">bind<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/volumes\/\">volume<\/a><\/noindex> ou <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/tmpfs\/\">tmpfs<\/a><\/noindex>. Aqui falamos sobre volumes, ou seja, estamos interessados no valor <code>volume<\/code>.<\/li>\n<li><code>source<\/code> \u2014 fonte da montagem. Para volumes nomeados, isso \u00e9 \u2014 o nome do volume. Para volumes n\u00e3o nomeados, essa chave n\u00e3o \u00e9 informada. Ela pode ser abreviada para <code>src<\/code>.<\/li>\n<li><code>destino<\/code> \u2014 caminho onde o arquivo ou pasta \u00e9 montado no cont\u00eainer. Essa chave pode ser abreviada para <code>dst<\/code> ou <code>alvo<\/code>.<\/li>\n<li><code>readonly<\/code> \u2014 monta um volume que \u00e9 destinado <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/volumes\/#use-a-read-only-volume\">somente para leitura<\/a><\/noindex>. Usar essa chave n\u00e3o \u00e9 obrigat\u00f3rio, nenhum valor \u00e9 atribu\u00eddo a ela.<\/li>\n<\/ul>\n<p>\nAqui est\u00e1 um exemplo de uso <code>--mount<\/code> com muitos par\u00e2metros:<\/p>\n<pre><code class=\"plaintext\">docker run --mount type=volume,source=volume_name,destination=\\\/path\\\/in\\\/container,readonly my_image<\/code><\/pre>\n<p><\/p>\n<h2>Resultados<\/h2>\n<p>\nAqui est\u00e3o alguns comandos \u00fateis que podem ser usados ao trabalhar com volumes Docker:<\/p>\n<ul>\n<li><code>docker volume create<\/code><\/li>\n<li><code>docker volume ls<\/code><\/li>\n<li><code>docker volume inspect<\/code><\/li>\n<li><code>docker volume rm<\/code><\/li>\n<li><code>docker volume prune<\/code><\/li>\n<\/ul>\n<p>\nAqui est\u00e1 uma lista de par\u00e2metros frequentemente utilizados para <code>--mount<\/code>, aplic\u00e1veis ao comando do tipo <code>docker run --mount my_options my_image<\/code>:<\/p>\n<ul>\n<li><code>type=volume<\/code><\/li>\n<li><code>source=volume_name<\/code><\/li>\n<li><code>destination=\\\/path\\\/in\\\/container<\/code><\/li>\n<li><code>readonly<\/code><\/li>\n<\/ul>\n<p>\nAgora que conclu\u00edmos esta s\u00e9rie de materiais sobre Docker, \u00e9 hora de dizer algumas palavras sobre para onde aqueles que estudam Docker podem seguir em frente. <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.freecodecamp.org\/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b\">Aqui<\/a><\/noindex> um \u00f3timo artigo sobre Docker. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Docker-Deep-Dive-Nigel-Poulton-ebook\/dp\/B01LXWQUFF\">Aqui<\/a><\/noindex> um livro sobre Docker (ao comprar este livro, procure obter a edi\u00e7\u00e3o mais recente). <noindex><a rel=\"nofollow\" href=\"https:\/\/dockerbook.com\/\">Aqui<\/a><\/noindex> outro livro que ser\u00e1 adequado para aqueles que acreditam que a pr\u00e1tica \u00e9 a melhor maneira de aprender tecnologias.<\/p>\n<p><b>Prezados leitores!<\/b> Quais materiais sobre Docker voc\u00ea recomendaria para iniciantes?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ruvds.com\/ru-rub\/#order\"><img decoding=\"async\" alt=\"Aprendendo Docker, parte 6: trabalhando com dados\" src=\"\/wp-content\/uploads\/2019\/05\/78a5dd35cfae6d1e291f175957207436.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/441574\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0435\u0440\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Docker \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e \u0442\u043e\u043c\u0430\u0445 Docker. \u0412 \u044d\u0442\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u0445 \u043c\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b Docker \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u044a\u0435\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u044f\u043c\u0438. \u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438 \u0438 \u0437\u0434\u0435\u0441\u044c. \u0414\u0430\u043d\u043d\u044b\u0435 \u0432 Docker \u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0443\u0442 \u0441\u043f\u0435\u0446\u0438\u044f\u043c\u0438. \u0412 \u043c\u0438\u0440\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0438\u0434\u043e\u0432 \u0441\u043f\u0435\u0446\u0438\u0439, \u0430 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24642,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32873","post","type-post","status-publish","format-standard","has-post-thumbnail","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=\"\u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0435\u0440\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Docker \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e \u0442\u043e\u043c\u0430\u0445 Docker.\" \/>\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\/izuchaem-docker-chast-6-rabota-s-dannymi\" \/>\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\u0418\u0437\u0443\u0447\u0430\u0435\u043c Docker, \u0447\u0430\u0441\u0442\u044c 6: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0435\u0440\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Docker \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e \u0442\u043e\u043c\u0430\u0445 Docker.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi\" \/>\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-31T18:49:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:49:25+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\udd47Aprendendo Docker, parte 6: trabalhando com dados | ProHoster","description":"Na parte de hoje da tradu\u00e7\u00e3o da s\u00e9rie de materiais sobre Docker, vamos falar sobre trabalhar com dados. Em particular \u2014 sobre volumes Docker.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi","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\u0418\u0437\u0443\u0447\u0430\u0435\u043c Docker, \u0447\u0430\u0441\u0442\u044c 6: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 | ProHoster","og:description":"\u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0435\u0440\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Docker \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e \u0442\u043e\u043c\u0430\u0445 Docker.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi","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-31T18:49:25+00:00","article:modified_time":"2019-10-31T18:49:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32873","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"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-21 12:57:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:56:03","updated":"2026-08-11 12:50:34","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\/32873","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=32873"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/32873\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/24642"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=32873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=32873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=32873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}