Ultralytics YOLO27:
Get Started

Guia de início rápido do Docker para a Ultralytics#

Ultralytics Docker Package Visual

Este guia é uma introdução abrangente à configuração de um ambiente Docker para os teus projetos Ultralytics. O Docker é uma plataforma para desenvolver, distribuir e executar aplicações em contentores. É particularmente útil para garantir que o software é sempre executado da mesma forma, independentemente do local onde é implementado. Para mais detalhes, visita o repositório Docker da Ultralytics no Docker Hub.

Versão da imagem Docker Transferências da imagem Docker

O que vais aprender#

  • Configurar o Docker com suporte para NVIDIA
  • Instalar imagens Docker da Ultralytics
  • Executar a Ultralytics num contentor Docker com suporte para CPU ou GPU
  • Usar um servidor de ecrã com o Docker para apresentar os resultados de deteção da Ultralytics
  • Montar diretórios locais no contentor


Assista: Como começar a usar Docker | Demonstração ao vivo do uso do pacote Ultralytics Python dentro do Docker 🎉

Pré-requisitos#

  • Certifica-te de que o Docker está instalado no teu sistema. Caso contrário, podes transferi-lo e instalá-lo a partir do site do Docker.
  • Para obter aceleração por GPU, certifica-te de que o teu sistema tem uma GPU NVIDIA e os controladores NVIDIA instalados. As imagens para CPU não precisam de hardware NVIDIA.
  • Se estiveres a usar dispositivos NVIDIA Jetson, certifica-te de que tens instalada a versão adequada do JetPack. Consulta o guia da NVIDIA Jetson para mais detalhes.

Configurar o Docker com suporte para NVIDIA (opcional)#

Primeiro, verifica se os controladores NVIDIA estão instalados corretamente, executando:

nvidia-smi

Instalar o NVIDIA Container Toolkit#

Agora, vamos instalar o NVIDIA Container Toolkit para ativar o suporte para GPU nos contentores 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

Atualiza as listas de pacotes e instala o NVIDIA Container Toolkit:

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

Verificar dispositivos CDI com o 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 no toolkit >= 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.

Instalar imagens Docker da Ultralytics#

A Ultralytics publica as seguintes imagens no Docker Hub. Cada imagem é compilada a partir do Dockerfile associado pelo fluxo de publicação do Docker.

EtiquetaPlataforma e finalidadeFonte
latestLinux AMD64 com CUDA para treino e inferência em GPUDockerfile
latest-exportLinux AMD64 com CUDA e dependências de exportação para conversão e avaliação de desempenhoDockerfile-export
latest-amdLinux AMD64 com ROCm e MIGraphX para treino e inferência em GPU AMDDockerfile-amd
latest-pythonImagem Linux AMD64 leve com Python 3.14 para inferência na CPUDockerfile-python
latest-python-exportImagem Linux AMD64 com Python 3.13 para CPU e dependências de exportaçãoDockerfile-python-export
latest-cpuImagem Linux AMD64 para CPU com Bash como comando predefinidoDockerfile-cpu
latest-jupyterImagem Linux AMD64 para CPU com JupyterLab e blocos de notas de tutoriais da UltralyticsDockerfile-jupyter
latest-arm64Imagem Linux ARM64 com Python 3.13 para CPU, Apple silicon, Raspberry Pi e outros sistemas ARM64Dockerfile-arm64
latest-nvidia-arm64Linux ARM64 para DGX Spark (DGX OS) e PyTorch no Thor (JetPack 7.1); o TensorRT incluído não é compatível com o JetPackDockerfile-nvidia-arm64
latest-jetson-jetpack6Linux ARM64 para dispositivos NVIDIA Jetson com JetPack 6Dockerfile-jetson-jetpack6
latest-jetson-jetpack5Linux ARM64 para dispositivos NVIDIA Jetson com JetPack 5Dockerfile-jetson-jetpack5
latest-jetson-jetpack4Linux ARM64 para dispositivos NVIDIA Jetson com JetPack 4Dockerfile-jetson-jetpack4
latest-runnerImagem Linux AMD64 com CUDA para um executor de GPU autoalojado do GitHub ActionsDockerfile-runner
latest-runner-cpuImagem Linux AMD64 para um executor de CPU autoalojado do GitHub ActionsDockerfile-runner-cpu

As imagens de GPU AMD64 (latest, latest-export e latest-runner) usam PyTorch 2.14 e CUDA 13.2. Verifica a compatibilidade do controlador do anfitrião com CUDA através de nvidia-smi antes de as iniciar; instalar um contentor mais recente não atualiza o controlador do anfitrião. O CUDA 13 deixou de ser compatível com as GPU Maxwell, Pascal e Volta, incluindo a Tesla P100 e a V100. Consulta as notas de lançamento do CUDA da NVIDIA e os requisitos de compatibilidade dos controladores.

A imagem NVIDIA ARM64 usa NVIDIA PyTorch 26.08 com CUDA 13.4 e TensorRT 11.2. O suporte do PyTorch para Thor não se estende ao TensorRT: a NVIDIA não suporta o TensorRT 11.2 no JetPack. Para exportações do TensorRT no Jetson, usa o runtime TensorRT 10.x compatível com a tua versão do JetPack. Segue os requisitos da plataforma no guia do Jetson ou no guia do DGX Spark. As imagens do JetPack 4, 5 e 6 mantêm as respetivas pilhas específicas para cada dispositivo.

O Dockerfile do Conda está disponível para compilações locais; a publicação automatizada de latest-conda está desativada, pelo que essa etiqueta do registo não inclui estas atualizações.

Usa latest-python-export para exportações LiteRT. A imagem de GPU latest-export mantém o PyTorch 2.14 e não inclui LiteRT, porque a dependência atual deste requer uma versão do PyTorch anterior à 2.14.

As imagens Python, CPU, Jupyter e executor de CPU usam Python 3.14. A imagem Python para exportação usa a base latest-python-3.13, criada a partir da mesma Dockerfile-python com --build-arg PYTHON_VERSION=3.13, porque TensorFlow, CoreML e PaddlePaddle ainda não oferecem suporte ao Python 3.14.

As etiquetas que começam por latest acompanham a compilação mais recente publicada a partir do ramo principal. Nas etiquetas com versões, o prefixo latest é substituído por uma versão da Ultralytics, como VERSION, VERSION-cpu ou VERSION-jetson-jetpack6. Usa uma etiqueta com versão para obter um ambiente reproduzível.

Para transferir a imagem mais recente:

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

Em alternativa, para compilares uma imagem, clona o repositório e indica o Dockerfile correspondente na tabela acima, usando a raiz do repositório como contexto de compilação:

# Build the CPU image locally from docker/Dockerfile-cpu
sudo docker build -t ultralytics/ultralytics:latest-cpu -f docker/Dockerfile-cpu .

Executar a Ultralytics num contentor Docker#

Segue estas instruções para executar o contentor Docker da Ultralytics:

Usar apenas a CPU#

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

Usar GPU#

# 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 opção -it atribui um pseudo-TTY e mantém o stdin aberto, permitindo-te interagir com o contentor. A opção --ipc=host ativa a partilha do espaço de nomes IPC do anfitrião, essencial para partilhar memória entre processos. Para GPU NVIDIA, a opção --device nvidia.com/gpu=... concede acesso através de CDI. Para GPU AMD, as opções --device concedem acesso ao controlador de kernel da GPU (/dev/kfd) e aos nós de renderização do ecrã (/dev/dri).

Usa CDI em vez de `--gpus all`

Em Linux, os pedidos de dispositivos CDI requerem Docker >= 28.2.0 (CDI ativado por predefinição) e nvidia-container-toolkit >= 1.18 (geração automática da especificação CDI). Atualiza os anfitriões Linux mais antigos antes de executar contentores com GPU. A opção antiga --gpus all pode fazer com que se perca o acesso à GPU (Failed to initialize NVML: Unknown Error) quando o anfitrião recarrega o systemd durante atualizações de rotina de pacotes (nvidia-container-toolkit#48). Os pedidos CDI --device incluem os nós de dispositivo na configuração do contentor, pelo que os contentores de longa duração, como os processos de trabalho de treino ou os executores de CI, mantêm o acesso à GPU durante os recarregamentos.

O suporte para GPU do Docker Desktop no Windows usa atualmente --gpus all com o backend WSL 2, porque os dispositivos CDI da NVIDIA não estão disponíveis nesse ambiente. O Windows não usa o systemd do Linux, por isso a falha de recarregamento do daemon descrita acima não se aplica.

Nota sobre o acesso a ficheiros#

Para trabalhar com ficheiros do teu computador local dentro do contentor, podes 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

Substitui /path/on/host pelo caminho do diretório no teu computador local e /path/in/container pelo caminho pretendido dentro do contentor Docker.

Manter os resultados do treino#

Por predefinição, os resultados do treino são guardados em /ultralytics/runs/<task>/<name>/ dentro do contentor. Se não montares um diretório do anfitrião, os resultados perdem-se quando o contentor é removido.

Para manter os resultados do treino:

# 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

Isto guarda todos os resultados do treino em ./runs no teu computador anfitrião.

Executar aplicações de interface gráfica do utilizador (GUI) num contentor Docker#

Altamente experimental — o utilizador assume todos os riscos

As instruções a seguir são experimentais. Partilhar um socket X11 com um contentor Docker pode representar riscos de segurança. Por isso, recomenda-se testar esta solução apenas num ambiente controlado. Para mais informações, consulta estes recursos sobre como usar xhost(1)(2).

O Docker é usado principalmente para colocar aplicações em segundo plano e programas CLI em contentores, mas também pode executar programas gráficos. No mundo Linux, dois servidores gráficos principais tratam da apresentação gráfica: X11 (também conhecido como X Window System) e Wayland. Antes de começar, é essencial determinar que servidor gráfico estás a usar. Executa este comando para descobrir:

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

A configuração de um servidor de ecrã X11 ou Wayland está fora do âmbito deste guia. Se o comando acima não devolver nada, terás de começar por configurar um deles para funcionar no teu sistema antes de continuar.

Executar um contentor Docker com uma GUI#

Exemplo
Usar GPUs

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

Se estiveres a usar X11, podes executar o seguinte comando para permitir que o contentor Docker aceda ao socket 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 o ecrã do anfitrião, monta o socket X11 e mapeia o ficheiro .Xauthority para o contentor. O comando xhost +local:docker permite que o contentor Docker aceda ao servidor X11.

Usar o Docker com uma GUI#

As imagens da Ultralytics incluem OpenCV sem interface gráfica, por isso, primeiro instala a versão do OpenCV com interface gráfica e as bibliotecas do sistema no contentor:

apt-get update && apt-get install -y --no-install-recommends libgl1 libglib2.0-0 libsm6
pip uninstall -y opencv-python-headless && pip install opencv-python

Agora podes apresentar aplicações gráficas dentro do teu contentor Docker. Por exemplo, podes executar o seguinte comando CLI para visualizar as previsões de um modelo YOLO26:

yolo predict model=yolo26n.pt show=True
Testes

Uma forma simples de validar se o grupo Docker tem acesso ao servidor X11 é executar um contentor com um programa de GUI, como xclock ou xeyes. Em alternativa, também podes instalar estes programas no contentor Docker da Ultralytics para testar o acesso ao servidor X11 do teu servidor de ecrã GNU-Linux. Se tiveres algum problema, 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, ajudando no processo de resolução de problemas.

Quando terminares de usar a GUI do Docker#

Revogar o acesso

Em ambos os casos, não te esqueças de revogar o acesso do grupo Docker quando terminares.

xhost -local:docker
Queres ver os resultados das imagens diretamente no Terminal?

Agora já tens tudo preparado para usar a Ultralytics com o Docker e tirar partido das respetivas capacidades. Para alojar a aplicação Web da Ultralytics no teu próprio servidor, consulta o guia da plataforma no local. Para conhecer métodos alternativos de instalação do pacote Python, consulta a documentação de início rápido da Ultralytics.

Perguntas frequentes#

  • Para configurar a Ultralytics com o Docker, primeiro confirma que o Docker está instalado no teu sistema. Se tiveres uma GPU NVIDIA, instala o NVIDIA Container Toolkit para ativar o suporte para GPU. Em seguida, obtém a imagem Docker mais recente da Ultralytics no Docker Hub com o seguinte comando:

    sudo docker pull ultralytics/ultralytics:latest

    Para obter instruções detalhadas, consulta o nosso Guia de início rápido do Docker.

  • Usar imagens Docker da Ultralytics garante um ambiente consistente em diferentes máquinas, replicando o mesmo software e as mesmas dependências. Isto é particularmente útil para colaborar entre equipas, executar modelos em vários tipos de hardware e manter a reprodutibilidade. Usa latest para o treino geral em GPUs NVIDIA ou seleciona a imagem correspondente à tua versão do JetPack para um dispositivo NVIDIA Jetson. Consulta a tabela completa de imagens ou explora o Docker Hub da Ultralytics.

  • Primeiro, confirma que o NVIDIA Container Toolkit está instalado e configurado. Em seguida, usa o seguinte comando para executar a Ultralytics YOLO com suporte para GPU:

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

    Este comando configura um contentor Docker com acesso à GPU. Para mais informações, consulta o Guia de início rápido do Docker.

  • Para visualizar os resultados das previsões YOLO com uma GUI num contentor Docker, tens de permitir que o Docker aceda ao teu servidor de ecrã. Nos sistemas que executam 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

    Nos sistemas que executam Wayland, usa:

    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

    No contentor, instala a versão do OpenCV com interface gráfica antes de usar show=True, conforme descrito na secção Executar aplicações de interface gráfica (GUI) num contentor Docker.

  • Sim, podes montar diretórios locais no contentor Docker da 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

    Substitui /path/on/host pelo diretório da tua máquina local e /path/in/container pelo caminho pretendido dentro do contentor. Esta configuração permite-te trabalhar com os teus ficheiros locais dentro do contentor. Para mais informações, consulta a secção Nota sobre a acessibilidade dos ficheiros.

Comentários