Guia de Início Rápido do Docker para o Ultralytics#
Este guia serve como uma introdução abrangente à configuração de um ambiente Docker para os teus projetos Ultralytics. O Docker é uma plataforma para desenvolver, enviar e executar aplicações em contentores. É particularmente benéfico para garantir que o software seja sempre executado da mesma forma, independentemente de onde seja implementado. Para mais detalhes, visita o repositório Docker da Ultralytics no Docker Hub.
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#
- Certifica-te de que o Docker está instalado no teu sistema. Caso contrário, podes descarregá-lo e instalá-lo a partir do website do Docker.
- Para aceleração por GPU, garante que o teu sistema possui uma GPU NVIDIA e os controladores NVIDIA instalados. As imagens de CPU não requerem hardware NVIDIA.
- Se estiveres a usar dispositivos NVIDIA Jetson, certifica-te de que tens a versão do JetPack apropriada instalada. Consulta o guia do NVIDIA Jetson para mais detalhes.
Configurando o Docker com suporte a NVIDIA (Opcional)#
Primeiro, verifique se os drivers NVIDIA estão instalados corretamente executando:
nvidia-smiInstalando o NVIDIA Container Toolkit#
Agora, vamos instalar o NVIDIA Container Toolkit para ativar o suporte a 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.listAtualize as listas de pacotes e instale o NVIDIA Container Toolkit:
sudo apt-get updatesudo apt-get install -y nvidia-container-toolkitVerifica 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 listDeverás ver entradas como nvidia.com/gpu=0 e nvidia.com/gpu=all. Os dispositivos CDI descobertos 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 do seu Dockerfile associado pelo fluxo de trabalho de publicação do Docker.
| Tag | Plataforma e finalidade | Origem |
|---|---|---|
latest | Linux AMD64 com CUDA para treinamento e inferência em GPU | Dockerfile |
latest-export | Linux AMD64 com CUDA e dependências de exportação para conversão e benchmarking | Dockerfile-export |
latest-python | Imagem Python Linux AMD64 leve para inferência em CPU | Dockerfile-python |
latest-python-export | Imagem Linux AMD64 para CPU com dependências de exportação | Dockerfile-python-export |
latest-cpu | Imagem Linux AMD64 para CPU com Bash como comando padrão | Dockerfile-cpu |
latest-jupyter | Imagem Linux AMD64 para CPU com JupyterLab e notebooks de tutorial da Ultralytics | Dockerfile-jupyter |
latest-arm64 | Imagem de CPU Linux ARM64 para Apple silicon, Raspberry Pi e outros sistemas ARM64 | Dockerfile-arm64 |
latest-nvidia-arm64 | Linux ARM64 com suporte a GPU NVIDIA para Jetson AGX Thor, DGX Spark, JetPack 7 e DGX OS | Dockerfile-nvidia-arm64 |
latest-jetson-jetpack6 | Linux ARM64 para dispositivos NVIDIA Jetson a executar o JetPack 6 | Dockerfile-jetson-jetpack6 |
latest-jetson-jetpack5 | Linux ARM64 para dispositivos NVIDIA Jetson a executar o JetPack 5 | Dockerfile-jetson-jetpack5 |
latest-jetson-jetpack4 | Linux ARM64 para dispositivos NVIDIA Jetson a executar o JetPack 4 | Dockerfile-jetson-jetpack4 |
latest-runner | Imagem Linux AMD64 com CUDA para um executor de GPU GitHub Actions auto-hospedado | Dockerfile-runner |
latest-runner-cpu | Imagem Linux AMD64 para um executor de CPU GitHub Actions auto-hospedado | Dockerfile-runner-cpu |
As tags que começam com latest acompanham a compilação do ramo principal publicada mais recentemente. As tags com versão substituem o prefixo latest por uma versão da Ultralytics, como VERSION, VERSION-cpu ou VERSION-jetson-jetpack6. Usa uma tag com versão para um ambiente reprodutível.
Para baixar a imagem mais recente:
# Pull the latest Ultralytics image from Docker Hub
sudo docker pull ultralytics/ultralytics:latestPara construir uma imagem por ti próprio em vez disso, clona o repositório e passa o Dockerfile correspondente da tabela acima, utilizando a raiz do repositório como o contexto de construção:
# Build the CPU image locally from docker/Dockerfile-cpu
sudo docker build -t ultralytics/ultralytics:latest-cpu -f docker/Dockerfile-cpu .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-cpuUsando 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:latestA flag -it atribui um pseudo-TTY e mantém o stdin aberto, permitindo-te interagir com o contentor. A flag --ipc=host permite a partilha do espaço de nomes IPC do anfitrião, o que é essencial para partilhar memória entre processos. A flag --device nvidia.com/gpu=... concede ao contentor acesso às GPUs do anfitrião através do CDI.
No Linux, os pedidos de dispositivos CDI exigem Docker >= 28.2.0 (CDI ativado por predefinição) e nvidia-container-toolkit >= 1.18 (geração automática de especificações CDI). Atualiza os anfitriões Linux mais antigos antes de executar contentores de GPU. A flag legada --gpus all pode perder o acesso à GPU (Failed to initialize NVML: Unknown Error) quando o anfitrião recarrega o systemd durante atualizações de pacotes de rotina (nvidia-container-toolkit#48). Os pedidos CDI --device incluem os nós de dispositivos na configuração do contentor, para que os contentores de longa duração, como trabalhadores de treino ou executores de CI, mantenham o acesso à GPU após os recarregamentos.
O suporte de GPU do Docker Desktop no Windows utiliza atualmente --gpus all com o backend WSL 2, uma vez que os dispositivos CDI da NVIDIA não estão disponíveis aí. O Windows não utiliza o systemd do Linux, pelo que a falha de recarregamento do daemon 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:latestSubstitui /path/on/host pelo caminho do diretório na tua máquina local e /path/in/container pelo caminho pretendido dentro do contentor Docker.
Persistindo saídas de treinamento#
As saídas de treino são guardadas em /ultralytics/runs/<task>/<name>/ dentro do contentor por predefinição. Sem montar um diretório de anfitrião, as saídas são perdidas quando o contentor é 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/runsIsto guarda todas as saídas de treino em ./runs na tua máquina anfitriã.
Executar aplicativos de interface gráfica do usuário (GUI) em um contêiner Docker#
O Docker é utilizado principalmente para colocar aplicações em contentores e programas CLI, mas também pode executar programas gráficos. No mundo Linux, dois servidores gráficos principais gerem a exibição gráfica: X11 (também conhecido como X Window System) e Wayland. Antes de começar, é essencial determinar qual o servidor gráfico que estás a utilizar atualmente. Executa 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#
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:latestEste 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.
Usando Docker com uma GUI#
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=TrueTestando
Uma forma simples de validar se o grupo Docker tem acesso ao servidor X11 é executar um contentor com um programa 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 visualização GNU-Linux. Se encontrares algum problema, considera definir a variável de ambiente -e QT_DEBUG_PLUGINS=1. Definir esta variável de ambiente ativa a emissão de informações de depuração, ajudando no processo de resolução de problemas.
Ao terminar com a GUI do Docker#
Em ambos os casos, não se esqueça de revogar o acesso do grupo Docker quando terminar.
xhost -local:dockerQuer visualizar os resultados da imagem diretamente no Terminal?
Consulta o seguinte guia sobre como ver os resultados das imagens utilizando um terminal
Estás agora preparado para utilizar a Ultralytics com o Docker e pronto para tirar partido das suas capacidades. Para alojar autonomamente a aplicação web da Ultralytics, consulta o guia de plataforma On-Premise. Para métodos alternativos de instalação de pacotes Python, consulta a documentação de início rápido da Ultralytics.
FAQ#
Para configurar a Ultralytics com o Docker, certifica-te primeiro de que o Docker está instalado no teu sistema. Se tiveres uma GPU NVIDIA, instala o NVIDIA Container Toolkit para ativar o suporte a GPU. Em seguida, obtém a imagem Docker mais recente da Ultralytics a partir do Docker Hub utilizando o seguinte comando:
sudo docker pull ultralytics/ultralytics:latestPara etapas detalhadas, consulte nosso Guia de Início Rápido do Docker.
A utilização de imagens Docker da Ultralytics garante um ambiente consistente em diferentes máquinas, replicando o mesmo software e dependências. Isto é particularmente útil para colaborar entre equipas, executar modelos em vários hardwares e manter a reprodutibilidade. Usa
latestpara o treino geral em GPU NVIDIA ou seleciona a imagem correspondente à tua versão do JetPack para um dispositivo NVIDIA Jetson. Vê a tabela de imagens completa ou explora o Docker Hub da Ultralytics.Primeiro, certifica-te de que o NVIDIA Container Toolkit está instalado e configurado. Em seguida, utiliza 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 GPUsEste comando configura um contêiner Docker com acesso a GPU. Para detalhes adicionais, consulte o Guia de Início Rápido do Docker.
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:latestPara 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:latestPodes encontrar mais informações na secção Executar aplicações de interface gráfica de utilizador (GUI) num contentor Docker.
Sim, podes montar diretórios locais no contentor Docker da Ultralytics utilizando a flag
-v:sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latestSubstitui
/path/on/hostpelo diretório na tua máquina local e/path/in/containerpelo 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 acessibilidade de ficheiros.