Ollama com Docker: instalação e primeiro modelo
Para rodar Ollama no Docker, execute a imagem oficial ollama/ollama com um volume para os modelos e a porta 11434: docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama. Com uma placa NVIDIA, adicione --gpus=all após instalar o NVIDIA Container Toolkit. No macOS, o Docker Desktop não oferece acesso à GPU. Publique a porta em 127.0.0.1 se a API não deva ficar acessível pela rede.
O Ollama em um contêiner é um serviço isolado que pode ser iniciado, atualizado e removido com um comando, sem alterar o sistema. Este guia parte do comando oficial, acrescenta uma GPU NVIDIA, um primeiro modelo e um arquivo Compose, e depois aborda o que os tutoriais omitem: quem realmente pode acessar a porta 11434, qual versão fixar e por que uma GPU pode desaparecer durante a execução.
#Ollama dentro do Docker: o que realmente muda
A imagem oficial se chama ollama/ollama e está disponível no Docker Hub, onde ultrapassa os 100 milhões de downloads. Ela baseia-se em Ubuntu 24.04 e inicia diretamente o servidor Ollama: a variável OLLAMA_HOST tem o valor 0.0.0.0:11434, ou seja, a API escuta na porta 11434 dentro do contêiner. Restam quatro decisões a serem tomadas. Publicar essa porta para o host, montar um volume em /root/.ollama para manter os modelos, conceder acesso ao GPU com --gpus=all se você tiver uma placa NVIDIA, e escolher a versão da imagem. O contêiner inicia sem nenhum modelo: você os baixa posteriormente com o comando ollama, executado dentro do contêiner. Essas quatro decisões são idênticas em um arquivo Compose.
Você ganha uma instalação isolada, sem serviço do sistema, descrita por um único arquivo e que pode coexistir facilmente com outros contêineres (interface web, banco de dados vetorial, n8n). Em contrapartida, precisa configurar o acesso à GPU, não tem acesso à GPU no macOS e precisa controlar a exposição de uma porta de rede — um ponto que a maioria dos tutoriais omite.
#Qual comando de acordo com seu hardware
Seu ChatGPT privado e gratuito na sua máquina em 1 hora — LM Studio, Ollama, Open WebUI, seus documentos, sem nuvem.
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
Uma única imagem abrange todos os casos; apenas as opções de inicialização mudam conforme a GPU. A tabela reproduz as informações da documentação do Ollama, incluindo a restrição que mais costuma causar problemas.
| Máquina | Imagem e opções | O que é necessário no host | Limitação que você deve conhecer |
|---|---|---|---|
| Sem GPU | ollama/ollama, nenhuma opção | Apenas Docker | Reserve essa via para modelos pequenos |
| NVIDIA, Linux | ollama/ollama com --gpus=all | Driver 550 ou superior, NVIDIA Container Toolkit | Placas com compute capability de 5.0 a 6.2: driver 570 no mínimo |
| NVIDIA, Windows | Mesmo comando, Docker Desktop | Backend WSL2, driver compatível com WSL2, kernel WSL2 atualizado | Sem WSL2, nenhum acesso ao GPU |
| AMD Radeon, Linux | ollama/ollama:rocm com --device /dev/kfd --device /dev/dri | Controlador AMD ROCm v7 | Placa não listada: HSA_OVERRIDE_GFX_VERSION, em teste |
| Outros GPUs (Vulkan) | ollama/ollama com --device /dev/kfd --device /dev/dri | Nada: Vulkan está incluído na imagem | Desativável com OLLAMA_VULKAN=0 |
| NVIDIA Jetson | --gpus=all e JETSON_JETPACK=5 ou 6 | JetPack 5 ou 6 | Ollama não adivinha a versão |
| Mac (Docker Desktop) | ollama/ollama, apenas CPU | Nada | Sem passthrough de GPU: prefira a instalação nativa |
#Pré-requisitos
- Docker
- Docker Engine no Linux, Docker Desktop no Windows ou macOS, com o comando docker compose para a seção 5.
- Memória
- O peso do modelo, mais o contexto, mais uma margem para o sistema. qwen3.5:9b pesa 6,6 GB: ao executar na CPU, procure ter 16 GB de RAM, não 8.
- Disco
- 20 GB livres para imagem e um ou dois modelos.
- GPU NVIDIA, opcional
- O driver é instalado no host, nunca no contêiner; o NVIDIA Container Toolkit faz a ponte.
#Procedimento em cinco etapas
- 01Instalar o DockerDocker Engine no Linux, Docker Desktop no Windows ou macOS. O comando docker version deve responder tanto no lado do cliente quanto no lado do motor.
- 02Preparar o GPU NVIDIA (opcional)Instalar o NVIDIA Container Toolkit, executar nvidia-ctk runtime configure --runtime=docker, reiniciar o Docker e, em seguida, testar com docker run --rm --gpus all ubuntu nvidia-smi.
- 03Iniciar o contêinerdocker run avec -d, --name ollama, -v ollama:/root/.ollama, -p 127.0.0.1:11434:11434 et, avec NVIDIA, --gpus=all.
- 04Baixar um modelodocker exec -it ollama ollama pull, seguido de qwen3.5:4b para uma placa de 8 GB, ou de qwen3.5:9b com mais margem.
- 05Verificardocker exec ollama ollama ps doit afficher 100% GPU dans la colonne PROCESSOR.
#1. O comando docker run
A documentação do Ollama fornece este comando para execução apenas no processador: docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama. A versão abaixo limita a publicação da porta à máquina local, o que a seção seguinte justifica, e adiciona a reinicialização automática.
- -p 127.0.0.1:11434:11434
- Publica a porta 11434 do contêiner na porta correspondente da máquina, com acesso apenas pela própria máquina.
- -v ollama:/root/.ollama
- Volume nomeado montado no local onde Ollama armazena seus modelos. Ele sobrevive à exclusão do contêiner.
- --restart unless-stopped
- Reinicia o contêiner após uma reinicialização do Docker ou da máquina, exceto se o contêiner tiver sido parado manualmente.
A resposta é um objeto JSON com o número de versão, por exemplo {"version":"0.34.4"}, a versão estável em 29 de setembro de 2026.
#Porta 11434: quem realmente pode acessá-la
Instalado nativamente, Ollama escuta por padrão em 127.0.0.1: apenas a máquina pode conversar com ele. No contêiner, a imagem define OLLAMA_HOST para 0.0.0.0:11434, caso contrário, a porta não seria acessível do exterior. A proteção depende, portanto, da forma como você publica a porta.
De acordo com a documentação do Docker, publicar a porta de um contêiner é pouco seguro por padrão: ela se torna acessível ao mundo externo, não apenas ao host. O comando -p 11434:11434 a associa a todos os endereços da máquina. Acontece que a API local do Ollama não exige autenticação: qualquer pessoa que consiga acessar a porta pode listar seus modelos, baixar modelos ou ocupar sua GPU.
- -p 11434:11434
- Todas as interfaces do host: acessível pela rede local ou até mesmo pela Internet.
- -p 127.0.0.1:11434:11434
- Apenas na máquina local. Esse é o padrão escolhido neste guia.
- -p 192.168.1.10:11434:11434
- Um único endereço do host; substitua-o pelo seu.
Para disponibilizar intencionalmente o Ollama em uma rede, coloque um proxy reverso com autenticação à frente dele, como explica o guia de segurança citado no final da página.
#Mudar a porta no host
A porta 11434 está em uso se outra instância já estiver rodando, geralmente a aplicação nativa. Não mexa no lado do contêiner: mude apenas o número da esquerda. Com -p 127.0.0.1:11435:11434, sua máquina comunica-se com Ollama na porta 11435; dentro do contêiner, nada muda.
#Acessar o Ollama a partir de outro contêiner
Dois serviços de um mesmo arquivo Compose compartilham uma rede na qual cada um pode ser acessado pelo nome do serviço. O Open WebUI usa assim http://ollama:11434, sem publicar a porta externamente. Se o Ollama estiver rodando no host, a documentação do Open WebUI aponta o problema: ele escuta em 127.0.0.1 e permanece inacessível a partir do contêiner. É necessário acessá-lo por host.docker.internal e configurá-lo para escutar em outro endereço.
#2. Ativar a GPU NVIDIA
O Docker não detecta sua GPU por padrão. É necessário ter, no host, um driver NVIDIA atualizado, o NVIDIA Container Toolkit e, então, usar a opção --gpus. O Ollama exige um driver de versão 550 ou mais recente, e 570 para placas antigas com compute capability de 5.0 a 6.2. Os contêineres usam o driver do host; não incluem um driver próprio.
O comando nvidia-ctk modifica o arquivo /etc/docker/daemon.json para que o Docker reconheça o runtime NVIDIA, daí a necessidade de reiniciar. Para Fedora ou RHEL, a documentação do Ollama fornece a variante com yum ou dnf. Antes de mexer no Ollama, isole o problema com um contêiner descartável: se ele falhar, o Ollama também não detectará sua GPU.
Reinicie em seguida Ollama com acesso à GPU. O volume é conservado: os modelos já baixados permanecem lá.
Para uma Radeon no Linux, a tag rocm e os dispositivos /dev/kfd e /dev/dri substituem --gpus; ainda é necessário instalar o driver ROCm v7 no host.
#3. Primeiro modelo
O container está rodando, mas está vazio. O comando ollama fica dentro do container: você o executa com docker exec. Este guia utiliza qwen3.5:9b, que a biblioteca Ollama descreve como tendo 6,6 GB, uma janela de 256K e suporte a texto e imagem.
Esses 6,6 GB devem caber na memória antes mesmo de o contexto entrar em jogo. Em uma placa de 8 GB, a margem é pequena: a variante 4B é a escolha prudente.
| Tag | Peso no disco | Referência para escolher |
|---|---|---|
| qwen3.5:4b | 3,4 GB | Placa de 8 GB, com margem para o contexto |
| qwen3.5:9b | 6,6 GB | Placa de 12 GB ou mais, ou 16 GB de RAM para execução no processador |
| qwen3.5:27b | 17 GB | Placa de 24 GB, contexto moderado |
| qwen3.5:35b | 24 GB | Não cabe em uma placa de 24 GB com contexto: parte do modelo é transferida para a RAM do sistema. |
Os marcadores da última coluna são ordens de grandeza, não medidas: a posição real depende do contexto e da quantificação. Para conversar com o modelo, inicie ollama run dans o contêiner.
O uso habitual se dá pela API HTTP: qualquer cliente se comunica com o contêiner como se fosse uma instalação nativa do Ollama, e a documentação especifica que a API aceita um subconjunto do formato OpenAI.
Na coluna PROCESSOR, 100% GPU significa que o modelo está inteiramente na placa, 100% CPU que está na memória do sistema e 48%/52% CPU/GPU que está dividido entre as duas. Essa divisão torna a geração significativamente mais lenta: é melhor usar um modelo menor do que um que não caiba inteiramente na VRAM.
#O contexto é definido no contêiner
O tamanho padrão da janela de contexto depende da memória: 4k com menos de 24 GiB de VRAM, 32k entre 24 e 48 GiB, 256k acima. A documentação recomenda pelo menos 64.000 tokens para agentes e ferramentas de código. Um contexto maior consome mais memória: use -e OLLAMA_CONTEXT_LENGTH=8192 no comando docker run, depois verifique a coluna CONTEXT do comando ollama ps.
#4. Volume persistente: onde estão seus modelos
O -v ollama:/root/.ollama cria um volume Docker chamado ollama, separado do contêiner. A documentação do Docker confirma: um volume persiste após a remoção do contêiner, o que permite substituir a imagem sem baixar os modelos novamente. O comando docker volume inspect ollama indica seu Mountpoint, a localização dos arquivos no host.
No Linux, a instalação nativa armazena os modelos em /usr/share/ollama/.ollama/models. Esse diretório não tem relação com o volume do Docker: um modelo baixado de um lado não aparece do outro.
#5. Docker Compose: a mesma coisa, em um arquivo
O arquivo abaixo faz o mesmo que os comandos anteriores, pode ser revisado rapidamente e versionado no git. Ele fixa a versão da imagem: substitua 0.34.4 pela versão estável mais recente no momento da leitura.
O bloco deploy reserva a GPU; de acordo com a documentação do Compose, o campo capabilities é obrigatório, caso contrário a implantação falha. Sem GPU NVIDIA, remova o bloco inteiro: o restante funciona no processador.
#Atualizar Ollama sem perder seus modelos
Em 29 de setembro de 2026, a página de versões do Ollama no GitHub marca a 0.34.4 como a versão estável mais recente, enquanto a 0.35.0 está listada como pré-lançamento. A tag 0.35.0, porém, já existe no Docker Hub, entre tags rc, de release candidate. Portanto, fixe um número de versão estável em vez de seguir a tag publicada mais recentemente: a atualização chega quando você decidir.
Com Compose, altere o número no arquivo e depois execute docker compose pull e docker compose up -d. Com docker run, baixe a nova imagem, remova o contêiner antigo e execute novamente o mesmo comando: desde que o volume seja o mesmo, os modelos são preservados. Por fim, verifique a versão com curl http://localhost:11434/api/version.
#Docker ou instalação nativa: a escolha
Os dois métodos resultam no mesmo servidor, na mesma porta. A tabela se baseia na documentação do Ollama; ela não compara velocidades, por falta de uma medição publicada que possa ser citada.
| Critério | Ollama dentro do Docker | Ollama instalado nativamente |
|---|---|---|
| Atualização | Alterar a tag e depois executar docker compose pull | Automático no macOS e Windows; no Linux, reexecutar o script de instalação |
| Modelos | Volume do Docker ou pasta montada | /usr/share/ollama/.ollama/models sous Linux |
| Registros | docker logs ollama | journalctl -u ollama no Linux com systemd |
| Exposição à rede | Escolha do parâmetro -p (127.0.0.1 ou todos os endereços) | 127.0.0.1 por padrão, modificável com OLLAMA_HOST |
| GPU no Mac | Nenhum acesso | Instalação direta na máquina |
Escolha Docker para executar vários serviços em conjunto, fixar uma versão ou compartilhar um computador. Escolha a instalação nativa em um Mac ou quando o Docker não oferece vantagem para uso individual.
#Solução de problemas
- could not select device driver "nvidia"
- O NVIDIA Container Toolkit está faltando, ou o Docker não foi reiniciado após nvidia-ctk runtime configure. Refaça a configuração, reinicie o Docker e teste novamente com docker run --rm --gpus all ubuntu nvidia-smi.
- O GPU funciona, depois Ollama volta para o processador
- Sintoma documentado: o log indica falhas na detecção do GPU após um certo tempo. Ollama recomenda desativar a gestão cgroup do systemd no Docker: adicione "exec-opts": ["native.cgroupdriver=cgroupfs"] ao /etc/docker/daemon.json, depois reinicie o Docker.
- Erros de GPU 3, 46, 100 ou 999
- Recarregue o driver UVM com sudo rmmod nvidia_uvm seguido de sudo modprobe nvidia_uvm, ou reinicie a máquina.
- Porta 11434 já em uso
- Outra instância está escutando, muitas vezes o aplicativo nativo. Pare essa instância ou publique em outra porta com -p 127.0.0.1:11435:11434.
- Respostas truncadas
- O comprimento de contexto padrão depende da VRAM. Adicione -e OLLAMA_CONTEXT_LENGTH=8192 ao iniciar, monitorando a memória.
- Download bloqueado por proxy
- Passe -e HTTPS_PROXY=https://proxy.example.com para o contêiner. A documentação recomenda evitar HTTP_PROXY, pois pode interferir nos clientes.
- Inacessível pela rede local
- Normal com -p 127.0.0.1:11434:11434. Abra a porta somente com uma camada de autenticação protegendo o acesso.
#Perguntas frequentes
Qual é a imagem Docker oficial do Ollama?+
Ollama pode usar a GPU dentro do Docker no Windows ou no Mac?+
Como atualizar o Ollama dentro do Docker sem perder os modelos?+
Como conectar Open WebUI a Ollama com Docker Compose?+
A API do Ollama dentro de um contêiner está protegida por senha?+
#Para se aprofundar
Você tem um Ollama funcional, isolado, com um modelo na GPU. Os próximos passos naturais: uma interface de conversa, medidas de segurança antes de qualquer compartilhamento pela rede e, depois, uma pilha de produção.
- Instalar Ollama em todos os sistemas: o guia geral
- Solução de problemas do Ollama: GPU não detectada, lentidão, erros de memória
- Docker Model Runner: executar LLMs com Docker, sem Ollama
- Fonte: documentação Ollama, página Docker
- Fonte: imagem ollama/ollama no Docker Hub
- Fonte: Docker, publicação de portas
- Fonte: NVIDIA Container Toolkit, guia de instalação
- Fonte: documentação do Ollama, GPUs compatíveis
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.