{"id":1750,"date":"2026-07-31T03:00:31","date_gmt":"2026-07-31T03:00:31","guid":{"rendered":"https:\/\/convly.ai\/?p=1750"},"modified":"2026-08-01T06:45:53","modified_gmt":"2026-08-01T06:45:53","slug":"ollama-docker","status":"publish","type":"post","link":"https:\/\/convly.ai\/pt\/ollama-docker\/","title":{"rendered":"Guia Docker do Ollama (2026): Execute o Ollama em um cont\u00eainer com GPU"},"content":{"rendered":"<p>Em execu\u00e7\u00e3o <strong>Ollama no Docker<\/strong> \u00e9 a maneira mais limpa de manter um servidor local de modelos reproduz\u00edvel: o mesmo comando funciona em um laptop, em um servidor dom\u00e9stico e em um servidor alugado com GPU, sem que nada vaze para o sistema hospedeiro. A configura\u00e7\u00e3o \u00e9 curta, mas dois detalhes \u2014 passagem direta da GPU e persist\u00eancia de volumes \u2014 s\u00e3o respons\u00e1veis pela maior parte do tempo desperdi\u00e7ado.<\/p>\n<div style=\"background:#faf9ff;border:1px solid #e6e1f5;border-left:4px solid #6d28d9;border-radius:10px;padding:18px 22px;margin:28px 0;\">\n<p style=\"margin:0 0 10px;font-weight:700;color:#4c1d95;font-size:14px;letter-spacing:.5px;text-transform:uppercase;\">Quick answer<\/p>\n<p style=\"margin:0;\">Baixe e execute a imagem oficial com um volume nomeado para que os modelos sobrevivam \u00e0s reinicializa\u00e7\u00f5es: <code>docker run -d -v ollama:\/root\/.ollama -p 11434:11434 --name ollama ollama\/ollama<\/code>. Para uma GPU NVIDIA, instale o NVIDIA Container Toolkit no hospedeiro e adicione <code>--gpus=all<\/code>. Em seguida, baixe modelos dentro do cont\u00eainer com <code>docker exec -it ollama ollama pull llama3.1<\/code>. A API fica dispon\u00edvel na porta 11434 exatamente como em uma instala\u00e7\u00e3o nativa.<\/p>\n<\/div>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-flat ez-toc-counter ez-toc-container-direction\">\n<label for=\"ez-toc-cssicon-toggle-item-6a705a483f5a1\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Alternar<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #000000;color:#000000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #000000;color:#000000\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a705a483f5a1\"  aria-label=\"Alternar\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/convly.ai\/pt\/ollama-docker\/#The_three_commands_that_matter\" >Os tr\u00eas comandos essenciais<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/convly.ai\/pt\/ollama-docker\/#GPU_passthrough_the_part_that_fails\" >Passagem direta da GPU: a parte que costuma falhar<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/convly.ai\/pt\/ollama-docker\/#Keep_your_models_between_restarts\" >Mantenha seus modelos entre reinicializa\u00e7\u00f5es<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/convly.ai\/pt\/ollama-docker\/#docker_compose_for_a_setup_you_keep\" >docker compose, para uma configura\u00e7\u00e3o que voc\u00ea mant\u00e9m<\/a><\/li><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/convly.ai\/pt\/ollama-docker\/#Frequently_asked_questions\" >Perguntas frequentes<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"The_three_commands_that_matter\"><\/span>Os tr\u00eas comandos essenciais<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div style=\"background:#faf9ff;border:1px solid #e6e1f5;border-radius:10px;padding:18px 22px;margin:28px 0;overflow-x:auto;\">\n<table style=\"width:100%;border-collapse:collapse;font-size:15px;\">\n<tr>\n<th style=\"text-align:left;padding:8px 10px;border-bottom:2px solid #e6e1f5;color:#4c1d95;\">Objetivo<\/th>\n<th style=\"text-align:left;padding:8px 10px;border-bottom:2px solid #e6e1f5;color:#4c1d95;\">Comando<\/th>\n<\/tr>\n<tr>\n<td style=\"padding:8px 10px;border-bottom:1px solid #efecf8;\">Apenas CPU<\/td>\n<td style=\"padding:8px 10px;border-bottom:1px solid #efecf8;\"><code>docker run -d -v ollama:\/root\/.ollama -p 11434:11434 --name ollama ollama\/ollama<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"padding:8px 10px;border-bottom:1px solid #efecf8;\">Com GPU NVIDIA<\/td>\n<td style=\"padding:8px 10px;border-bottom:1px solid #efecf8;\"><code>docker run -d --gpus=all -v ollama:\/root\/.ollama -p 11434:11434 --name ollama ollama\/ollama<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"padding:8px 10px;border-bottom:1px solid #efecf8;\">Baixar um modelo<\/td>\n<td style=\"padding:8px 10px;border-bottom:1px solid #efecf8;\"><code>docker exec -it ollama ollama pull llama3.1<\/code><\/td>\n<\/tr>\n<\/table>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"GPU_passthrough_the_part_that_fails\"><\/span>Passagem direta da GPU: a parte que costuma falhar<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Por padr\u00e3o, um cont\u00eainer n\u00e3o consegue acessar sua GPU. No Linux, instale o <strong>NVIDIA Container Toolkit<\/strong> no hospedeiro, reinicie o Docker e adicione <code>--gpus=all<\/code>. Verifique se funcionou dentro do cont\u00eainer com <code>docker exec -it ollama nvidia-smi<\/code> \u2014 se esse comando falhar, o Ollama ser\u00e1 executado, mas silenciosamente na CPU, levando voc\u00ea a concluir erroneamente que sua GPU \u00e9 lenta, quando na verdade ela simplesmente n\u00e3o est\u00e1 sendo utilizada. No Windows, o caminho correto \u00e9 usar o Docker Desktop com backend WSL2 e drivers NVIDIA atualizados. Usu\u00e1rios AMD precisam da imagem com tag ROCm, em vez da imagem padr\u00e3o; j\u00e1 GPUs Apple Silicon n\u00e3o podem ser expostas ao Docker \u2014 no macOS, execute o Ollama nativamente.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Keep_your_models_between_restarts\"><\/span>Mantenha seus modelos entre reinicializa\u00e7\u00f5es<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Os arquivos de modelos s\u00e3o grandes e demoram para ser baixados novamente, e um cont\u00eainer sem volume os descarta assim que \u00e9 removido. A flag <code>-v ollama:\/root\/.ollama<\/code> em todos os comandos acima cria um volume nomeado que persiste entre reinicializa\u00e7\u00f5es, atualiza\u00e7\u00f5es e altera\u00e7\u00f5es de imagem. Se preferir armazenar os arquivos em um local vis\u00edvel, use um bind-mount para um diret\u00f3rio do hospedeiro em vez disso: <code>-v \/srv\/ollama:\/root\/.ollama<\/code>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"docker_compose_for_a_setup_you_keep\"><\/span>docker compose, para uma configura\u00e7\u00e3o que voc\u00ea mant\u00e9m<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Para qualquer configura\u00e7\u00e3o permanente, um arquivo docker-compose supera um comando longo de execu\u00e7\u00e3o: ele registra a reserva da GPU, o volume e a porta em um \u00fanico lugar, reinicia automaticamente o servi\u00e7o e permite adicionar uma interface web ao lado dele posteriormente. O cont\u00eainer exp\u00f5e o mesmo endpoint compat\u00edvel com OpenAI em <code>http:\/\/localhost:11434<\/code>, de modo que os aplicativos n\u00e3o conseguem distinguir entre instala\u00e7\u00f5es nativas e em cont\u00eainer.<\/p>\n<div style=\"background:#fffdf5;border:1px solid #f0e6c8;border-left:4px solid #b45309;border-radius:10px;padding:18px 22px;margin:28px 0;\">\n<p style=\"margin:0 0 10px;font-weight:700;color:#92400e;font-size:14px;letter-spacing:.5px;text-transform:uppercase;\">Convly&#8217;s take<\/p>\n<p style=\"margin:0;\">Cont\u00eainerize o Ollama quando a m\u00e1quina for um servidor, e pule o Docker quando a m\u00e1quina for seu laptop. Em um servidor dom\u00e9stico ou em um servidor alugado com GPU, a configura\u00e7\u00e3o com volume + docker-compose \u00e9 realmente superior: reproduz\u00edvel, atualiz\u00e1vel e f\u00e1cil de migrar. Em uma m\u00e1quina pessoal \u2014 especialmente um Mac, onde a passagem direta da GPU \u00e9 imposs\u00edvel \u2014 o Docker adiciona uma camada que reduz desempenho e traz poucos benef\u00edcios. O problema mais comum causado pelo pr\u00f3prio usu\u00e1rio que observamos \u00e9 um cont\u00eainer executando silenciosamente na CPU porque o toolkit nunca foi instalado; execute nvidia-smi dentro do cont\u00eainer antes de fazer qualquer benchmark.<\/p>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"Frequently_asked_questions\"><\/span>Perguntas frequentes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3>O Ollama no Docker suporta GPUs?<\/h3>\n<p>Sim, com NVIDIA mediante instala\u00e7\u00e3o do NVIDIA Container Toolkit e <code>--gpus=all<\/code>, e com AMD usando a imagem ROCm. GPUs Apple Silicon n\u00e3o podem ser expostas ao Docker \u2014 execute o Ollama nativamente no macOS.<\/p>\n<h3>Onde os modelos s\u00e3o armazenados na configura\u00e7\u00e3o com Docker?<\/h3>\n<p>Dentro do cont\u00eainer, em <code>\/root\/.ollama<\/code>. Mapeie esse caminho para um volume nomeado ou diret\u00f3rio do hospedeiro, caso contr\u00e1rio os modelos desaparecer\u00e3o quando o cont\u00eainer for removido.<\/p>\n<h3>O Ollama \u00e9 mais lento no Docker?<\/h3>\n<p>Negligenciavelmente no Linux com passagem direta adequada da GPU. A lentid\u00e3o percebida quase sempre significa que o cont\u00eainer est\u00e1 rodando na CPU porque a GPU n\u00e3o foi passada corretamente.<\/p>\n<h3>Posso executar v\u00e1rios modelos em um \u00fanico cont\u00eainer?<\/h3>\n<p>Sim \u2014 baixe quantos desejar; o Ollama os carrega sob demanda. O limite \u00e9 a mem\u00f3ria: apenas os modelos efetivamente carregados consomem RAM ou VRAM.<\/p>\n<p>Novo na ferramenta? Comece com o <a href='\/pt\/how-to-install-ollama-2026\/'>Guia de instala\u00e7\u00e3o do Ollama<\/a>, verifique os requisitos de hardware em <a href='\/pt\/ollama-system-requirements-2026\/'>requisitos do sistema para o Ollama<\/a>, ou dimensionar um modelo com o <a href='\/pt\/llm-vram-calculator\/'>calculadora de VRAM<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Running Ollama in Docker keeps models and dependencies contained and makes the setup portable between machines. Here is the working configuration \u2014 including GPU passthrough and persistent storage.<\/p>","protected":false},"author":1,"featured_media":1785,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[5],"tags":[1048,756,256,259,1047],"class_list":["post-1750","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-tools","tag-docker","tag-gpu","tag-local-llm","tag-ollama","tag-self-hosting"],"_links":{"self":[{"href":"https:\/\/convly.ai\/pt\/wp-json\/wp\/v2\/posts\/1750","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/convly.ai\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/convly.ai\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/convly.ai\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/convly.ai\/pt\/wp-json\/wp\/v2\/comments?post=1750"}],"version-history":[{"count":2,"href":"https:\/\/convly.ai\/pt\/wp-json\/wp\/v2\/posts\/1750\/revisions"}],"predecessor-version":[{"id":1860,"href":"https:\/\/convly.ai\/pt\/wp-json\/wp\/v2\/posts\/1750\/revisions\/1860"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/convly.ai\/pt\/wp-json\/wp\/v2\/media\/1785"}],"wp:attachment":[{"href":"https:\/\/convly.ai\/pt\/wp-json\/wp\/v2\/media?parent=1750"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/convly.ai\/pt\/wp-json\/wp\/v2\/categories?post=1750"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/convly.ai\/pt\/wp-json\/wp\/v2\/tags?post=1750"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}