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 . O Docker é uma plataforma para desenvolver, enviar e executar aplicativos em contêineres. É particularmente benéfico para garantir que o software será sempre executado da mesma forma, independentemente de onde for implantado. Para obter mais detalhes, visita o repositório do Docker Ultralytics no Docker Hub.
O que vais aprender
- Configura o Docker com suporte para NVIDIA
- Instalar imagens do Ultralytics Docker
- Executar Ultralytics num contentor Docker com suporte para CPU ou GPU
- Usando um servidor de exibição com Docker para mostrar os resultados da deteção de Ultralytics
- Montagem de directórios locais no contentor
Pré-requisitos
- Certifica-te de que o Docker está instalado no teu sistema. Se não estiver, podes transferi-lo e instalá-lo a partir do site do Docker.
- Certifica-te de que o teu sistema tem um controlador NVIDIA GPU e NVIDIA instalados.
Configura o Docker com o suporte NVIDIA
Primeiro, verifica se os controladores NVIDIA estão corretamente instalados, executando:
Instalando o NVIDIA Docker Runtime
Agora, vamos instalar o tempo de execução do Docker NVIDIA para habilitar o suporte a GPU em contêineres do 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
Verifica o tempo de execução de NVIDIA com o Docker
Corre docker info | grep -i runtime
para garantir que nvidia
aparece na lista de tempos de execução:
Instalando Ultralytics Imagens Docker
Ultralytics oferece várias imagens Docker optimizadas para várias plataformas e casos de utilização:
- Dockerfile: GPU imagem, ideal para formação.
- Dockerfile-arm64: Para a arquitetura ARM64, adequada para dispositivos como o Raspberry Pi.
- Dockerfile-cpu: CPU Versão exclusiva para ambientes de inferência e nãoGPU .
- Dockerfile-jetson: Optimizado para NVIDIA dispositivos Jetson.
- Dockerfile-python: Ambiente mínimo Python para aplicações leves.
- Dockerfile-conda: Inclui o pacote Miniconda3 e Ultralytics instalado via Conda.
Para obteres 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
Executa Ultralytics no Docker Container
Vê aqui como executar o contentor Docker Ultralytics :
Utilizando apenas o CPU
Utilizar 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
atribui um pseudo-TTY e mantém o stdin aberto, permitindo-te interagir com o contentor. O sinalizador --ipc=host
permite a partilha do espaço de nomes IPC do anfitrião, essencial para a partilha de memória entre processos. O sinalizador --gpus
permite que o contentor aceda às GPUs do anfitrião.
Executa Ultralytics no Docker Container
Vê aqui como executar o contentor Docker Ultralytics :
Utilizando apenas o CPU
Utilizar 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
atribui um pseudo-TTY e mantém o stdin aberto, permitindo-te interagir com o contentor. O sinalizador --ipc=host
permite a partilha do espaço de nomes IPC do anfitrião, essencial para a partilha de memória entre processos. O sinalizador --gpus
permite que o contentor aceda às GPUs do anfitrião.
Nota sobre a acessibilidade dos ficheiros
Para trabalhar com ficheiros na tua máquina local dentro do contentor, podes utilizar os 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
Substitui /path/on/host
com o caminho do diretório na tua máquina local e /path/in/container
com o caminho desejado dentro do contentor Docker.
Executa 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 apresenta potenciais riscos de segurança. Portanto, é recomendável testar essa solução apenas em um ambiente controlado. Para obter mais informações, consulta estes recursos sobre como utilizar xhost
(1)(2).
O Docker é usado principalmente para colocar em contêineres 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 o servidor gráfico que estás a utilizar atualmente. Executa este comando para descobrir:
A instalação e configuração de um servidor de ecrã X11 ou Wayland está fora do âmbito deste guia. Se o comando acima não retornar nada, então terás de começar por pôr qualquer um deles a funcionar no teu sistema antes de continuar.
Executando um Docker Container com uma GUI
Exemplo
Utiliza GPUs
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.
Se estiveres a utilizar o 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 $t
Este comando define o DISPLAY
para o ecrã do anfitrião, monta o socket X11 e mapeia a variável de ambiente .Xauthority
para o contentor. O ficheiro xhost +local:docker
permite que o contentor Docker aceda ao servidor X11.
Para Wayland, utiliza 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 o DISPLAY
para a tela do host, monta o soquete Wayland e permite que o contêiner Docker acesse o servidor Wayland.
Usando o Docker com uma GUI
Now you can display graphical applications inside your Docker container. For example, you can run the following CLI command to visualize the predictions from a YOLO11 model:
Testes
Uma forma simples de validar que o grupo Docker tem acesso ao servidor X11 é executar um contentor com um programa GUI como xclock
ou xeyes
. Alternativamente, também podes instalar estes programas no contentor Ultralytics Docker para testar o acesso ao servidor X11 do teu servidor de visualização GNU-Linux. Se tiveres algum problema, considera definir a variável de ambiente -e QT_DEBUG_PLUGINS=1
. A definição desta variável de ambiente permite a saída de informações de depuração, ajudando no processo de resolução de problemas.
Quando terminares com 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.
Queres ver os resultados das imagens diretamente no Terminal?
Consulta o seguinte guia para ver os resultados da imagem utilizando um terminal
Parabéns! Agora estás preparado para usar Ultralytics com o Docker e pronto para tirar partido das suas poderosas capacidades. Para métodos de instalação alternativos, fica à vontade para explorar a documentação de início rápido doUltralytics .
FAQ
Como é que configuro Ultralytics com o Docker?
Para configurar Ultralytics com o Docker, primeiro certifica-te de que o Docker está instalado no teu sistema. Se tiveres um NVIDIA GPU , instala o tempo de execução do Docker NVIDIA para ativar o suporte GPU . Em seguida, extrai a imagem mais recente do Ultralytics Docker do Docker Hub usando o seguinte comando:
Para obter etapas detalhadas, consulta o nosso Guia de início rápido do Docker.
What are the benefits of using Ultralytics Docker images for machine learning projects?
Usando Ultralytics imagens Docker 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. Para treinamento baseado em GPU, Ultralytics fornece imagens Docker otimizadas, como Dockerfile
para utilização geral GPU e Dockerfile-jetson
para NVIDIA dispositivos Jetson. Explora Ultralytics Docker Hub para mais pormenores.
Como posso executar Ultralytics YOLO num contentor Docker com suporte para GPU ?
Primeiro, certifica-te de que o tempo de execução do NVIDIA Docker está instalado e configurado. Em seguida, usa o seguinte comando para executar Ultralytics YOLO com o suporte de GPU :
Esse comando configura um contêiner do Docker com acesso GPU . Para obter detalhes adicionais, consulte o Guia de início rápido do Docker.
Como é que visualizo os resultados da previsão de YOLO num contentor Docker com um servidor de visualização?
Para visualizar os resultados da previsão YOLO com uma GUI num contentor Docker, é necessário permitir que o Docker aceda ao seu servidor de visualização. Para sistemas que executam o 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 com Wayland, utiliza:
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
Podes encontrar mais informações na secção Executar aplicações de interface gráfica do utilizador (GUI) num contentor Docker.
Posso montar directórios locais no contentor Docker Ultralytics ?
Sim, podes montar directórios locais no contentor Docker Ultralytics utilizando o comando -v
bandeira:
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest
Substitui /path/on/host
com o diretório na tua máquina local e /path/in/container
com o caminho desejado 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 relevante sobre montagem de directórios locais.