ultralytics创建docker镜像容器
这里以ultralytics为例
克隆代码: git clone https://gitee.com/monkeycc/ultralytics.git
将代码放到服务器中,然后cd ultralytics; cp ultralytics/docker/Dockerfile ./
一. 创建镜像
因为网络问题,根据官方Dockerfile进行修改 ,将Arial.Unicode.ttf,Arial.ttf,yolo26n.pt 提前下载好,放到Dockerfile同目录下. 下载地址:https://github.com/ultralytics/assets/releases/download/v0.0.0/Arial.ttf
https://github.com/ultralytics/assets/releases/download/v0.0.0/Arial.Unicode.ttf
https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26n.pt
docker build -f Dockerfile -t ultralytics:v1 .
# Dockerfile 的内容 如下:
FROM nvcr.io/nvidia/pytorch:25.02-py3ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PIP_NO_CACHE_DIR=1 \
PIP_BREAK_SYSTEM_PACKAGES=1 \
UV_BREAK_SYSTEM_PACKAGES=1 \
MKL_THREADING_LAYER=GNU \
OMP_NUM_THREADS=1 \
TF_CPP_MIN_LOG_LEVEL=3 \
TORCH_CPP_LOG_LEVEL=ERRORRUN mkdir -p /root/.config/Ultralytics/
COPY Arial.ttf /root/.config/Ultralytics/Arial.ttf
COPY Arial.Unicode.ttf /root/.config/Ultralytics/Arial.Unicode.ttf
RUN apt-get update && \
apt-get install -y --no-install-recommends \
gcc git zip unzip wget curl htop libgl1 libglib2.0-0 gnupg libsm6 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*WORKDIR /ultralytics
COPY . .
RUN sed -i '/^\[http "https:\/\/github\.com\/"\]/,+1d' .git/config && \
sed -i'' -e 's/"opencv-python/"opencv-python-headless/' pyproject.tomlRUN pip install uv
RUN uv pip install --system -e "." albumentations faster-coco-eval nvidia-ml-py
FROM nvcr.io/nvidia/pytorch:25.02-py3 要根据你的NVIDIA显卡驱动版本来定,我用的22.02-py3
如果FROM设为: FROM pytorch/pytorch:2.11.0-cuda12.8-cudnn9-runtime ,会报错:
[+] Building 30.0s (2/2) FINISHED docker:default
=> [internal] load build definition from Dockerfile-conda 0.0s
=> => transferring dockerfile: 2.23kB 0.0s
=> ERROR [internal] load metadata for docker.io/continuumio/miniconda3:latest 30.0s
------
> [internal] load metadata for docker.io/continuumio/miniconda3:latest:
------
Dockerfile-conda:7
--------------------
5 |
6 | # Start FROM miniconda3 image https://hub.docker.com/r/continuumio/miniconda3
7 | >>> FROM continuumio/miniconda3:latest
8 |
9 | # Set environment variables
--------------------
ERROR: failed to solve: DeadlineExceeded: DeadlineExceeded: DeadlineExceeded: continuumio/miniconda3:latest: failed to resolve source metadata for docker.io/continuumio/miniconda3:latest: failed to do request: Head "https://registry-1.docker.io/v2/continuumio/miniconda3/manifests/latest": dial tcp 108.160.165.189:443: i/o timeout
解决方式:配置国内的镜像加速器,我这里选的阿里云
1)登录阿里云官网AI 加速季,智惠生产力->注册账号
2)在首页搜索 “容器镜像加速” 选择
3)获取镜像加速器地址
ACR会为每一个账号(阿里云账号或RAM用户)生成一个镜像加速器地址,配置镜像加速器前,您需要获取镜像加速器地址。
-
登录容器镜像服务控制台。
-
在左侧导航栏选择镜像工具 > 镜像加速器
-
在镜像加速器页面获取加速器地址。
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
配置完后,应该就不会报错了,但我用的别人的服务器,没有root权限,无法修改daemon.json文件。
这段暂时这样吧,无法验证,后续再完善
二. 查询镜像信息
docker images
三. 创建容器
docker run -it --ipc=host --runtime=nvidia --gpus all ultralytics:v1
在创建镜像的时候,已经把ultralytics的代码都拷贝进去了
如果要通过挂载的方式,也可以修改Dockfile,然后添加 -v 参数创建容器
// 下面选一个命令就行,或者看情况自己组合
// 只创建容器
docker create -it --name ultralytics-workspace -v $(pwd):/workspace ultralytics:v1 /bin/bash
// 创建容器并运行 随机命名
docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v ./ultralytics:/ultralytics ultralytics:v1 /bin/bash
// 指定名称
docker run -it --name ultralytics-workspace -v $(pwd):/workspace ultralytics:v1 /bin/bash
docker create -it --name ultralytics-workspace --privileged -v /dev/bus/usb:/dev/bus/usb -v $(pwd)/work3588:/workspace ultralytics:v1 /bin/bash
--privileged(特权模式)是一个极其强大的参数。简单来说,它相当于赋予了容器近乎等同于宿主机 root 用户的全部权限
-v ./ultralytics:/ultralytics 是本地的哪个目录挂载到容器的哪个位置
ultralytics:v1 是镜像名
// 使用这个命令吧
docker run -it --name yolovx --ipc=host --runtime=nvidia --gpus all -v "$PWD/../../ultralytics:/ultralytics" ultralytics:v1
四. 查看正在运行的容器
docker ps -a
五. 停止、启动、删除容器
docker stop yolovx // 停止容器
docker rm yolovx // 删除容器
docker start yolovx // 启动容器
六. 进入已创建并启动的容器
docker exec -it yolovx bash
七. 进入后,执行
yolo predict model=yolo26n.pt source="ultralytics/assets/bus.jpg"
报错:
Traceback (most recent call last):
File "/opt/conda/bin/yolo", line 4, in <module>
from ultralytics.cfg import entrypoint
File "/ultralytics/ultralytics/__init__.py", line 13, in <module>
from ultralytics.utils import ASSETS, SETTINGS
File "/ultralytics/ultralytics/utils/__init__.py", line 24, in <module>
import cv2
File "/opt/conda/lib/python3.8/site-packages/cv2/__init__.py", line 181, in <module>
bootstrap()
File "/opt/conda/lib/python3.8/site-packages/cv2/__init__.py", line 175, in bootstrap
if __load_extra_py_code_for_module("cv2", submodule, DEBUG):
File "/opt/conda/lib/python3.8/site-packages/cv2/__init__.py", line 28, in __load_extra_py_code_for_module
py_module = importlib.import_module(module_name)
File "/opt/conda/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/opt/conda/lib/python3.8/site-packages/cv2/gapi/__init__.py", line 290, in <module>
cv.gapi.wip.GStreamerPipeline = cv.gapi_wip_gst_GStreamerPipeline
AttributeError: partially initialized module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline' (most likely due to a circular import)
降版本等,各种方式都试了,都没用~~~放弃了!!!
补充:
根据官方Dockerfile,重头搭建没搞成~~~那就用现成的吧
毫秒镜像 - 国内Docker镜像加速下载平台 | 容器镜像仓库极速拉取服务
进入毫秒镜像中,搜索ultralytics获取
docker pull docker.1ms.run/ultralytics/ultralytics:latest
在终端输入:
docker pull docker.1ms.run/ultralytics/ultralytics:latest
docker tag docker.1ms.run/ultralytics/ultralytics:latest ultralytics:v1 # 这个可以省略
docker rmi docker.1ms.run/ultralytics/ultralytics:latest # 这个可以省略
docker run -it --ipc=host --runtime=nvidia --gpus all ultralytics:v1
进入镜像容器后,输入:
yolo predict model=yolo26n.pt source="ultralytics/assets/bus.jpg"
结果如下:
正常运行!完结!
更多推荐


所有评论(0)