YOLO Vision 2026:

Guia de Início Rápido do Docker para o Ultralytics#

Ultralytics Docker Package Visual

Este guia serve como uma introdução abrangente para configurar um ambiente Docker para seus projetos Ultralytics. O Docker é uma plataforma para desenvolver, distribuir e executar aplicativos em contêineres. É particularmente benéfico para garantir que o software sempre seja executado da mesma forma, independentemente de onde seja implantado. Para mais detalhes, visite o repositório Docker do Ultralytics no Docker Hub.

Versão da Imagem Docker Pulls do Docker

O que você aprenderá#

  • Configurar o Docker com suporte a NVIDIA
  • Instalar imagens Docker do Ultralytics
  • Executar o Ultralytics em um contêiner Docker com suporte a CPU ou GPU
  • Usar um servidor de exibição com Docker para mostrar resultados de detecção do Ultralytics
  • Montar diretórios locais no contêiner


Watch: How to Get started with Docker | Usage of Ultralytics Python Package inside Docker live demo 🎉

Pré-requisitos#

  • Certifique-se de que o Docker esteja instalado em seu sistema. Caso contrário, você pode baixá-lo e instalá-lo no site do Docker.
  • Para aceleração por GPU, garanta que seu sistema tenha uma GPU NVIDIA e drivers NVIDIA instalados. Imagens de CPU não requerem hardware NVIDIA.
  • Se estiveres a usar dispositivos NVIDIA Jetson, certifica-te de que tens a versão correta do JetPack instalada. Consulta o NVIDIA Jetson guide para mais detalhes.

Configurando o Docker com suporte a NVIDIA (Opcional)#

Primeiro, verifique se os drivers NVIDIA estão instalados corretamente executando:

nvidia-smi

Instalando o NVIDIA Container Toolkit#

Agora, vamos instalar o NVIDIA Container Toolkit para habilitar o suporte a GPU em contêineres Docker:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
    | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

Atualize as listas de pacotes e instale o NVIDIA Container Toolkit:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

Verifica os dispositivos CDI com Docker#

Executa nvidia-ctk cdi list para garantir que os dispositivos CDI da GPU estão disponíveis (o serviço nvidia-cdi-refresh do toolkit gera e mantém a especificação automaticamente em toolkits >= 1.18):

nvidia-ctk cdi list

Deves ver entradas como nvidia.com/gpu=0 e nvidia.com/gpu=all. Os dispositivos CDI detetados também aparecem em docker info.


Instalando imagens Docker do Ultralytics#

A Ultralytics publica as seguintes imagens no Docker Hub. Cada imagem é criada a partir de seu respectivo Dockerfile pelo fluxo de trabalho de publicação do Docker.

TagPlataforma e finalidadeOrigem
latestLinux AMD64 com CUDA para treinamento e inferência em GPUDockerfile
latest-exportLinux AMD64 com CUDA e dependências de exportação para conversão e benchmarkingDockerfile-export
latest-pythonImagem Python Linux AMD64 leve para inferência em CPUDockerfile-python
latest-python-exportImagem Linux AMD64 para CPU com dependências de exportaçãoDockerfile-python-export
latest-cpuImagem Linux AMD64 para CPU com Bash como comando padrãoDockerfile-cpu
latest-jupyterImagem Linux AMD64 para CPU com JupyterLab e notebooks de tutorial da UltralyticsDockerfile-jupyter
latest-arm64Imagem Linux ARM64 para CPU para Apple silicon, Raspberry Pi e outros sistemas ARM64Dockerfile-arm64
latest-nvidia-arm64Linux ARM64 com suporte a GPU NVIDIA para Jetson AGX Thor, DGX Spark, JetPack 7 e DGX OSDockerfile-nvidia-arm64
latest-jetson-jetpack6Linux ARM64 para dispositivos NVIDIA Jetson executando JetPack 6Dockerfile-jetson-jetpack6
latest-jetson-jetpack5Linux ARM64 para dispositivos NVIDIA Jetson executando JetPack 5Dockerfile-jetson-jetpack5
latest-jetson-jetpack4Linux ARM64 para dispositivos NVIDIA Jetson executando JetPack 4Dockerfile-jetson-jetpack4
latest-runnerImagem Linux AMD64 com CUDA para um executor de GPU GitHub Actions auto-hospedadoDockerfile-runner
latest-runner-cpuImagem Linux AMD64 para um executor de CPU GitHub Actions auto-hospedadoDockerfile-runner-cpu

As tags começando com latest acompanham a compilação do branch main publicada mais recentemente. Tags com versão substituem o prefixo latest por um lançamento da Ultralytics, como VERSION, VERSION-cpu ou VERSION-jetson-jetpack6. Use uma tag com versão para obter um ambiente reproduzível.

Para baixar a imagem mais recente:

# Pull the latest Ultralytics image from Docker Hub
sudo docker pull ultralytics/ultralytics:latest

Executando o Ultralytics em um contêiner Docker#

Veja como executar o contêiner Docker do Ultralytics:

Usando apenas a CPU#

# Run without GPU
sudo docker run -it --ipc=host ultralytics/ultralytics:latest-cpu

Usando GPUs#

# Run with all GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --device nvidia.com/gpu=2 --device nvidia.com/gpu=3 ultralytics/ultralytics:latest

A flag -it atribui um pseudo-TTY e mantém o stdin aberto, permitindo que interajas com o contentor. A flag --ipc=host permite a partilha do namespace IPC do host, essencial para partilhar memória entre processos. A flag --device nvidia.com/gpu=... concede ao contentor acesso às GPUs do host através de CDI.

Use CDI em vez de `--gpus all`

No Linux, as solicitações de dispositivo CDI requerem Docker >= 28.2.0 (CDI habilitado por padrão) e nvidia-container-toolkit >= 1.18 (geração automática de especificação CDI). Atualize hosts Linux mais antigos antes de executar contêineres de GPU. A flag legada --gpus all pode perder o acesso à GPU (Failed to initialize NVML: Unknown Error) quando o host recarrega o systemd durante atualizações de rotina de pacotes (nvidia-container-toolkit#48). As solicitações CDI --device incluem os nós de dispositivo na configuração do contêiner, portanto, contêineres de longa execução, como workers de treinamento ou executores de CI, mantêm o acesso à GPU durante recarregamentos.

O suporte a GPU no Docker Desktop no Windows atualmente usa --gpus all com o backend WSL 2, pois os dispositivos NVIDIA CDI não estão disponíveis lá. O Windows não usa o systemd do Linux, portanto, a falha no daemon-reload mencionada acima não se aplica.

Nota sobre acessibilidade de arquivos#

Para trabalhar com arquivos em sua máquina local dentro do contêiner, você pode usar volumes do Docker:

# Mount a local directory into the container
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

Substitua /path/on/host pelo caminho do diretório na sua máquina local e /path/in/container pelo caminho desejado dentro do contêiner Docker.

Persistindo saídas de treinamento#

As saídas de treinamento são salvas em /ultralytics/runs/<task>/<name>/ dentro do contêiner por padrão. Sem montar um diretório do host, as saídas são perdidas quando o contêiner é removido.

Para persistir as saídas de treinamento:

# Recommended: mount workspace and specify project path
sudo docker run --rm -it -v "$(pwd)":/w -w /w ultralytics/ultralytics:latest \
  yolo train model=yolo26n.pt data=coco8.yaml project=/w/runs

Isso salva todas as saídas de treinamento em ./runs na sua máquina host.

Executar aplicativos de interface gráfica do usuário (GUI) em um contêiner Docker#

Altamente experimental - O usuário assume todos os riscos

As instruções a seguir são experimentais. Compartilhar um soquete X11 com um contêiner Docker apresenta riscos potenciais à segurança. Portanto, recomenda-se testar esta solução apenas em um ambiente controlado. Para obter mais informações, consulte estes recursos sobre como usar o xhost(1)(2).

O Docker é usado principalmente para conteinerizar aplicativos em segundo plano e programas CLI, mas também pode executar programas gráficos. No mundo Linux, dois servidores gráficos principais lidam com a exibição gráfica: X11 (também conhecido como X Window System) e Wayland. Antes de começar, é essencial determinar qual servidor gráfico você está usando atualmente. Execute este comando para descobrir:

env | grep -E -i 'x11|xorg|wayland'

A configuração e a configuração de um servidor de exibição X11 ou Wayland estão fora do escopo deste guia. Se o comando acima não retornar nada, você precisará começar fazendo com que um deles funcione para seu sistema antes de continuar.

Executando um contêiner Docker com uma GUI#

Exemplo
Usar GPUs

Se estiveres a usar GPUs, podes adicionar a flag --device nvidia.com/gpu=all ao comando.

Se você estiver usando o X11, pode executar o seguinte comando para permitir que o contêiner Docker acesse o soquete X11:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ~/.Xauthority:/root/.Xauthority \
  -it --ipc=host ultralytics/ultralytics:latest

Este comando define a variável de ambiente DISPLAY para a exibição do host, monta o soquete X11 e mapeia o arquivo .Xauthority para o contêiner. O comando xhost +local:docker permite que o contêiner Docker acesse o servidor X11.

Usando Docker com uma GUI#

Agora você pode exibir aplicativos gráficos dentro do seu contêiner Docker. Por exemplo, você pode executar o seguinte comando CLI para visualizar as previsões de um modelo YOLO26:

yolo predict model=yolo26n.pt show=True
Testando

Uma forma simples de validar se o grupo Docker tem acesso ao servidor X11 é executar um contentor com um programa de interface gráfica como xclock ou xeyes. Alternativamente, também podes instalar estes programas no contentor Docker da Ultralytics para testar o acesso ao servidor X11 do teu servidor de visualização GNU-Linux. Se tiveres problemas, considera definir a variável de ambiente -e QT_DEBUG_PLUGINS=1. Definir esta variável de ambiente ativa a apresentação de informações de depuração, o que ajuda no processo de resolução de problemas.

Ao terminar com a GUI do Docker#

Revogar acesso

Em ambos os casos, não se esqueça de revogar o acesso do grupo Docker quando terminar.

xhost -local:docker
Quer visualizar os resultados da imagem diretamente no Terminal?

Agora você está pronto para usar a Ultralytics com Docker e tirar proveito de suas capacidades. Para auto-hospedar a aplicação web da Ultralytics, consulte o guia de plataforma local (On-Premise). Para métodos alternativos de instalação do pacote Python, consulte a documentação de início rápido da Ultralytics.

FAQ#

Como configuro o Ultralytics com Docker?#

Para configurar o Ultralytics com Docker, primeiro garanta que o Docker esteja instalado em seu sistema. Se você tiver uma GPU NVIDIA, instale o NVIDIA Container Toolkit para habilitar o suporte a GPU. Em seguida, baixe a imagem Docker mais recente do Ultralytics do Docker Hub usando o seguinte comando:

sudo docker pull ultralytics/ultralytics:latest

Para etapas detalhadas, consulte nosso Guia de Início Rápido do Docker.

Quais são os benefícios de usar imagens Docker do Ultralytics para projetos de aprendizado de máquina?#

O uso das imagens Docker da Ultralytics garante um ambiente consistente entre diferentes máquinas, replicando o mesmo software e dependências. Isso é particularmente útil para colaborar entre equipes, executar modelos em diversos hardwares e manter a reprodutibilidade. Use latest para treinamento geral em GPU NVIDIA ou selecione a imagem correspondente à sua versão do JetPack para um dispositivo NVIDIA Jetson. Consulte a tabela completa de imagens ou explore o Docker Hub da Ultralytics.

Como posso executar o Ultralytics YOLO em um contêiner Docker com suporte a GPU?#

Primeiro, garanta que o NVIDIA Container Toolkit esteja instalado e configurado. Em seguida, use o seguinte comando para executar o Ultralytics YOLO com suporte a GPU:

sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest # all GPUs

Este comando configura um contêiner Docker com acesso a GPU. Para detalhes adicionais, consulte o Guia de Início Rápido do Docker.

Como visualizo os resultados da previsão do YOLO em um contêiner Docker com um servidor de exibição?#

Para visualizar os resultados da previsão do YOLO com uma GUI em um contêiner Docker, você precisa permitir que o Docker acesse seu servidor de exibição. Para sistemas executando X11, o comando é:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ~/.Xauthority:/root/.Xauthority \
  -it --ipc=host ultralytics/ultralytics:latest

Para sistemas executando Wayland, use:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
  --net=host -it --ipc=host ultralytics/ultralytics:latest

Mais informações podem ser encontradas na seção Executar aplicativos de interface gráfica do usuário (GUI) em um contêiner Docker.

Posso montar diretórios locais no contêiner Docker do Ultralytics?#

Sim, você pode montar diretórios locais no contêiner Docker do Ultralytics usando a flag -v:

sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

Substitua /path/on/host pelo diretório na sua máquina local e /path/in/container pelo caminho desejado dentro do contêiner. Esta configuração permite que você trabalhe com seus arquivos locais dentro do contêiner. Para mais informações, consulte a seção Nota sobre acessibilidade de arquivos.

Comentários