Guia de Início Rápido do Docker para Ultralytics
Este guia serve como uma introdução abrangente à configuração de um ambiente Docker para seus projetos Ultralytics. Docker é uma plataforma para desenvolver, enviar e executar aplicações 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 Ultralytics Docker no Docker Hub.
O Que Você Irá Aprender
- Configurando o Docker com suporte NVIDIA
- Instalando imagens Docker da Ultralytics
- Executando Ultralytics em um contêiner Docker com suporte a CPU ou GPU
- Usando um Servidor de Exibição com Docker para Mostrar os Resultados da Detecção do Ultralytics
- Montando diretórios locais no contêiner
Assista: Como Começar com o Docker | Uso do Pacote Python Ultralytics Dentro do Docker (Demonstração ao Vivo) 🎉
Pré-requisitos
- Certifique-se de que o Docker esteja instalado no seu sistema. Caso contrário, você pode baixá-lo e instalá-lo no site do Docker.
- Certifique-se de que seu sistema tenha uma GPU NVIDIA e os drivers NVIDIA instalados.
Configurando o Docker com Suporte NVIDIA
Primeiro, verifique se os drivers NVIDIA estão instalados corretamente executando:
nvidia-smi
Instalando o NVIDIA Docker Runtime
Agora, vamos instalar o runtime NVIDIA Docker para habilitar o suporte a GPU em contêineres Docker:
# Add NVIDIA package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(lsb_release -cs)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# Install NVIDIA Docker runtime
sudo apt-get update
sudo apt-get install -y nvidia-docker2
# Restart Docker service to apply changes
sudo systemctl restart docker
Verificar o Runtime NVIDIA com Docker
Execute docker info | grep -i runtime
para garantir que nvidia
apareça na lista de runtimes:
docker info | grep -i runtime
Instalando as Imagens Docker da Ultralytics
A Ultralytics oferece diversas imagens Docker otimizadas para várias plataformas e casos de uso:
- Dockerfile: Imagem GPU, ideal para treinamento.
- Dockerfile-arm64: Para arquitetura ARM64, adequado para dispositivos como Raspberry Pi.
- Dockerfile-cpu: Versão somente para CPU para inferência e ambientes sem GPU.
- Dockerfile-jetson-jetpack4: Otimizado para dispositivos NVIDIA Jetson executando NVIDIA JetPack 4.
- Dockerfile-jetson-jetpack5: Otimizado para dispositivos NVIDIA Jetson executando NVIDIA JetPack 5.
- Dockerfile-jetson-jetpack6: Otimizado para dispositivos NVIDIA Jetson executando NVIDIA JetPack 6.
- Dockerfile-jupyter: Para desenvolvimento interativo usando JupyterLab no navegador.
- Dockerfile-python: Ambiente Python mínimo para aplicações leves.
- Dockerfile-conda: Inclui Miniconda3 e o pacote Ultralytics instalado via Conda.
Para baixar a imagem mais recente:
# Set image name as a variable
t=ultralytics/ultralytics:latest
# Pull the latest Ultralytics image from Docker Hub
sudo docker pull $t
Executando Ultralytics em um Contêiner Docker
Veja como executar o contêiner Ultralytics Docker:
Usando apenas a CPU
# Run without GPU
sudo docker run -it --ipc=host $t
Usando GPUs
# Run with all GPUs
sudo docker run -it --ipc=host --gpus all $t
# Run specifying which GPUs to use
sudo docker run -it --ipc=host --gpus '"device=2,3"' $t
O -it
A flag atribui um pseudo-TTY e mantém o stdin aberto, permitindo que você interaja com o contêiner. A --ipc=host
flag permite o compartilhamento do namespace IPC do host, essencial para compartilhar memória entre processos. A --gpus
flag permite que o contêiner acesse as GPUs do host.
Nota sobre Acessibilidade de Arquivos
Para trabalhar com arquivos em sua máquina local dentro do contêiner, você pode usar volumes Docker:
# Mount a local directory into the container
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container $t
Substitua /path/on/host
pelo caminho do diretório em sua máquina local e /path/in/container
pelo caminho desejado dentro do contêiner Docker.
Executar aplicações com 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 socket X11 com um contêiner Docker apresenta potenciais riscos de segurança. Portanto, é recomendado testar esta solução apenas em um ambiente controlado. Para mais informações, consulte estes recursos sobre como usar xhost
(1)(2).
O Docker é usado principalmente para conteinerizar aplicações 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 de um servidor de exibição X11 ou Wayland está fora do escopo deste guia. Se o comando acima não retornar nada, então você precisará começar fazendo com que um deles funcione para o seu sistema antes de continuar.
Executando um Contêiner Docker com uma GUI
Exemplo
Usar GPUs
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.
Se estiver a usar o X11, pode 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 $t
Este comando define a DISPLAY
variável de ambiente para o ecrã do host, monta o socket X11 e mapeia o .Xauthority
ficheiro para o contentor. O xhost +local:docker
comando permite que o contentor Docker aceda ao servidor X11.
Para Wayland, use o seguinte comando:
xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host $t
Este comando define a DISPLAY
variável de ambiente para o ecrã do host, monta o socket Wayland e permite que o contentor Docker aceda ao servidor Wayland.
Usando Docker com uma GUI
Agora pode exibir aplicações gráficas dentro do seu contentor Docker. Por exemplo, pode executar o seguinte comando CLI para visualizar as previsões de um modelo YOLO11:
yolo predict model=yolo11n.pt show=True
Testes
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
. Alternativamente, também pode instalar estes programas no contentor Docker Ultralytics para testar o acesso ao servidor X11 do seu servidor de visualização GNU-Linux. Se tiver algum problema, considere definir a variável de ambiente -e QT_DEBUG_PLUGINS=1
. Definir esta variável de ambiente ativa a saída de informações de depuração, auxiliando no processo de resolução de problemas.
Ao terminar com o Docker GUI
Revogar acesso
Em ambos os casos, não se esqueça de revogar o acesso do grupo Docker quando terminar.
xhost -local:docker
Quer ver os resultados da imagem diretamente no Terminal?
Consulte o seguinte guia sobre como visualizar os resultados da imagem usando um terminal
Parabéns! Agora está configurado para usar o Ultralytics com o Docker e pronto para aproveitar os seus poderosos recursos. Para métodos de instalação alternativos, sinta-se à vontade para explorar a documentação de início rápido do Ultralytics.
FAQ
Como configuro o Ultralytics com o Docker?
Para configurar o Ultralytics com o Docker, primeiro certifique-se de que o Docker está instalado no seu sistema. Se tiver uma GPU NVIDIA, instale o tempo de execução do NVIDIA Docker para ativar o suporte da GPU. Em seguida, extraia a imagem Docker Ultralytics mais recente do Docker Hub usando o seguinte comando:
sudo docker pull ultralytics/ultralytics:latest
Para obter instruções detalhadas, consulte nosso Guia de Início Rápido do Docker.
Quais são os benefícios de usar imagens Docker da Ultralytics para projetos de machine learning?
Usar imagens Ultralytics Docker garante um ambiente consistente em diferentes máquinas, replicando o mesmo software e dependências. Isso é particularmente útil para colaborar entre equipes, executando modelos em vários hardwares e mantendo a reprodutibilidade. Para treinamento baseado em GPU, a Ultralytics fornece imagens Docker otimizadas, como Dockerfile
para uso geral de GPU e Dockerfile-jetson
para dispositivos NVIDIA Jetson. Explore Ultralytics Docker Hub para mais detalhes.
Como posso executar o Ultralytics YOLO em um contêiner Docker com suporte a GPU?
Primeiro, certifique-se de que o runtime NVIDIA Docker 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 --gpus all ultralytics/ultralytics:latest
Este comando configura um contêiner Docker com acesso à GPU. Para obter 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 predição YOLO com uma GUI em um contêiner Docker, você precisa permitir que o Docker acesse seu servidor de exibição. Para 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
Para sistemas que executam 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 aplicações com interface gráfica (GUI) em um contêiner Docker.
Posso montar diretórios locais no contêiner Docker da Ultralytics?
Sim, você pode montar diretórios locais no contêiner Ultralytics Docker usando a flag -v
:
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest
Substitua /path/on/host
com o diretório na sua máquina local e /path/in/container
com o caminho desejado dentro do contêiner. Esta configuração permite que você trabalhe com seus arquivos locais dentro do contêiner. Para obter mais informações, consulte o Nota sobre Acessibilidade de Arquivos secção.