O Ollama mudou o jogo na execução de grandes modelos de linguagem (LLMs) localmente, e eu cobri vários tutoriais sobre como configurá-lo em diferentes dispositivos, incluindo meu Raspberry Pi.
Mas, à medida que continuei experimentando, percebi que ainda havia outra maneira fantástica de executar o Ollama: dentro de um contêiner Docker.
Agora, isso não é exatamente uma notícia de última hora. A primeira imagem do Ollama Docker foi lançada em 2023. Mas até recentemente, eu sempre a usei com uma instalação nativa.
Foi só quando estava trabalhando em um tutorial do Immich que me deparei com o NVIDIA Container Toolkit, que permite adicionar suporte a GPU aos contêineres do Docker.
Foi quando me interessei pela ideia de configurar o Ollama dentro do Docker e aproveitar a aceleração da GPU.
Neste guia, mostrarei duas maneiras de executar o Ollama no Docker com suporte à GPU:
- Usando um comando de uma linha
docker run. - Com Docker compose
Agora, vamos começar.
📋 Antes de começar, se você ainda não instalou o Docker, confira nossos tutoriais anteriores sobre como configurar o Docker no Linux.
Pré-requisito: Instalando o Nvidia Container Toolkit
O NVIDIA Container Toolkit inclui o NVIDIA Container Runtime e o plugin NVIDIA Container Toolkit para Docker, que permitem suporte a GPU dentro de contêineres Docker.
Antes da instalação, certifique-se de que você já instalou os drivers da GPU na sua distribuição específica.
Agora, para instalar o NVIDIA Container Toolkit, siga estas etapas:
- Habilite o repositório NVIDIA CUDA no seu sistema executando os seguintes comandos em uma janela de terminal:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update

- Instale o NVIDIA Container Toolkit executando o seguinte comando em uma janela de terminal:
sudo apt install -y nvidia-container-toolkit

- Reinicie o serviço Docker para aplicar as alterações:
sudo systemctl restart docker
Método 1: Executando Ollama com Docker run (Método rápido)
Se você quer apenas criar o Ollama em um contêiner sem muita complicação, esta frase simples resolverá o problema:
docker run -d --name ollama -p 11434:11434 -v ollama:/root/.ollama ollama/ollama
Ou, se você quiser suporte à GPU:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Aqui está uma análise do que está acontecendo com este comando:
docker run -d: Executa o contêiner no modo desanexado.--name ollama: Nomeia o contêiner como “ollama”.-p 11434:11434: Mapeia a porta 11434 do contêiner para o host.-v ollama:/root/.ollama: Cria um volume persistente para armazenar modelos.ollama/ollama: Usa a imagem oficial do Ollama Docker.

Depois que o contêiner estiver em execução, você pode verificar seu status com:
docker ps
Método 2: Executando Ollama com Docker Compose
Pessoalmente, acho que o Docker Compose é uma abordagem mais estruturada ao configurar um serviço dentro de um contêiner, pois é muito mais fácil de gerenciar.
💡 Se você estiver configurando o Ollama com o Open WebUI, sugiro usardocker volumesem vez de bind mountspara uma experiência menos frustrante.
Começaremos criando um arquivo docker-compose.yml para gerenciar o contêiner Ollama:
version: '3.8'
services:
ollama:
image: ollama/ollama
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: unless-stopped
volumes:
ollama:

Com o arquivo docker-compose.yml no lugar, inicie o contêiner usando:
docker-compose up -d

Isso iniciará o Ollama com a aceleração de GPU habilitada.
Acessando Ollama no Docker
Agora que temos o Ollama em execução dentro de um contêiner Docker, como podemos interagir com ele de forma eficiente?
Existem duas maneiras principais:
1. Usando o shell do Docker
Isso é muito fácil, você pode acessar o shell do contêiner Ollama digitando:
docker exec -it ollama <commands>

mas digitar esse mesmo comando com muita frequência pode ser cansativo. Podemos criar um alias para torná-lo mais curto.
Adicione isto ao seu arquivo .bashrc:
echo 'alias ollama="docker exec -it ollama ollama"' >> $HOME/.bashrc
source $HOME/.bashrc
e como estou usando shell zsh, usarei este comando:
echo 'alias ollama="docker exec -it ollama ollama"' >> $HOME/.zshrc
Agora, em vez de digitar o comando completo docker exec, você pode simplesmente executar:
ollama ps
ollama pull llama3
ollama run llama3

Isso faz com que a interação com o Ollama dentro do Docker pareça estar usando uma instalação nativa.
2. Usando a API do Ollama com clientes de interface de usuário da Web
O Ollama expõe uma API no http://localhost:11434, permitindo que outras ferramentas se conectem e interajam com ela.
Se você preferir uma interface gráfica de usuário (GUI) em vez da linha de comando, poderá usar vários clientes de interface de usuário da Web.
Algumas ferramentas populares que funcionam com o Ollama incluem:
- Open WebUI – Um frontend simples e bonito para LLMs locais.
- LibreChat – Uma interface poderosa semelhante ao ChatGPT com suporte a vários backends.
Não importa se você quer algo leve ou uma alternativa completa ao ChatGPT, há uma interface de usuário que atende às suas necessidades.
Conclusão
Executar o Ollama no Docker fornece uma maneira flexível e eficiente de interagir com modelos de IA locais, especialmente quando combinado com uma interface de usuário para fácil acesso em uma rede.
Ainda estou ajustando minha configuração para garantir um desempenho suave em vários dispositivos, mas até agora está funcionando bem.
Em outra nota, mergulhar mais fundo no NVIDIA Container Toolkit gerou algumas ideias interessantes. A capacidade de passar aceleração de GPU para contêineres Docker abre possibilidades além do Ollama.
Estou pensando em testá-lo com o Jellyfin para transcodificação acelerada por hardware, o que seria um grande avanço para a configuração do meu servidor de mídia.
Outros projetos, como Stable Diffusion ou upscaling com tecnologia de IA, também podem se beneficiar de uma passagem adequada de GPU.
Dito isso, adoraria saber sobre sua configuração! Você está executando o Ollama no Docker ou prefere uma instalação nativa? Você tentou algum cliente Web UI ou está usando a linha de comando?
Deixe sua opinião nos comentários abaixo.

