Docker在windows下使用教程,通过Dockerfile创建镜像/容器,以YOLO系列为例

一 、环境准备

1、Docker Desktop

 通过可视化界面将极大的降低学习难度。

 1.1、Docker Desktop下载

 下载地址:Docker Desktop: The #1 Containerization Tool for Developers | Docker

应当是这个界面,选择下载即可

1.2、下载完成后需打开window自带的虚拟机

 

 

 

将Hyper-V勾选即打开,勾选后需重启。 

1.3、下载WSL,由于是在windows下进行打包,而docker使用的是linux内核,故需要下载WSL 

安装详见: 安装 WSL | Microsoft Learn

1.4、若安装成功,应出现如下界面:

 

注意:刚下载好没有容器是对的,因为还没有创建 

 2、VScode: 通过VScode创建Dockerfile

假设你现在已经拥有了VScode并且可以使用它

2.1、创建Dockerfile文件

我更推荐直接在VScode中创建

2.1.1、打开工程主路径,即该文件夹下包括你所有的工程代码,在该路径下创建Dockerfile

如此创建

2.1.2、编辑Dockerfile文件

FROM python:3.10-slim  #使用python基础镜像
WORKDIR workspace  #创建在镜像/容器内代码的地址
COPY . .   #将物理电脑这个文件夹内的所有代码复制到镜像的workspace内
RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
     #安装代码运行所需环境
RUN pip install opencv-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple
     #yolo系列会报一个有关so的错误,下载这个即可
CMD ["python3","val.py"]  #创建命令

注意,workspace十分重要,不要在WORKDIR这一行内使用任何Windows路径,因为容器内为linux路径,两者混用将会产生错误。

3、通过创建的Dockerfile创建镜像

3.1、打开命令行端口,到达工程代码所在主路径

通过指令创建镜像:

通过指令由镜像创建容器/由DockerdDesktop创建容器

由指令创建:docker run -itd --name name-you-want-container -p 8899:80 name-you-want /bin/bash

由DeskTop创建:

点击run创建容器 

 

可以看到代码已经存入至容器内,并且由于在创建Dockerfile时已经内置了CMD,所以在创建容器时会自动跑代码

若能跑出结果,则说明正确,若是出现某些代码上的bug,修一下就好了。

3.2、打包镜像

导出镜像:

docker export -o busybox2.tar busybox2

 导入镜像:

docker import busybox2.tar busybox2:test #:后的test可改为其他词语,相当于一个特殊的标签

验证导出的镜像能不能用

docker run -it busybox2:test sh

以我的为例,该句代码应为:

docker run -it 我的镜像名:test python3 workspace/val.py

### 如何在 Docker 中使用 YOLO 进行对象检测 #### 准备工作 为了能够在 Docker 容器内运行 YOLO 对象检测,首先需要准备合适的环境。这通常涉及到创建一个适合于深度学习框架的 Dockerfile 文件[^1]。 ```dockerfile FROM nvidia/cuda:11.1-cudnn8-devel-ubuntu20.04 RUN apt-get update && \ apt-get install -y --no-install-recommends \ python3-pip \ python3-dev \ libsm6 \ libxext6 \ libxrender-dev \ git \ wget \ unzip \ ffmpeg \ libglib2.0-0 \ libgl1-mesa-glx \ libgtk2.0-0 \ libavcodec-extra \ libopencv-dev \ opencv-python-headless \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY requirements.txt ./ RUN pip3 install --upgrade pip && \ pip3 install -r requirements.txt # 下载并安装 Darknet 或者其他支持YOLO 的 Python 库, 例如 ultralytics/yolov5. RUN git clone https://github.com/ultralytics/yolov5.git yolov5_repo WORKDIR /app/yolov5_repo RUN pip3 install -qr requirements.txt # 将本地的数据集复制到容器中 COPY ./data /app/data/ CMD ["bash"] ``` 此 `Dockerfile` 使用 NVIDIA CUDA 基础镜像来构建具有 GPU 支持的环境,并安装必要的依赖项用于执行基于 PyTorch 的 YOLOv5 版本的对象检测任务[^2]。 #### 构建 Docker 镜像 有了上述的 Dockerfile 后,在命令行终端通过如下指令可以构建 Docker 镜像: ```shell docker build -t yolo-object-detection . ``` 这条命令会在当前目录下寻找名为 `Dockerfile` 的文件,并按照其中指定的操作逐步建立一个新的 Docker 映像,命名为 `yolo-object-detection`. #### 创建并启动容器实例 一旦映像被成功创建之后,就可以利用它来启动新的容器了: ```shell docker run -it --rm --name some-yolo-container --gpus all -p 7860:7860 -v $(pwd)/data:/app/data yolo-object-detection bash ``` 这里 `-p` 参数指定了端口转发规则以便访问 Web UI (如果有的话),而 `-v` 则挂载了一个卷使得主机上的 `/path/to/local/dataset` 能够作为容器内的 `/app/data` 访问[^3]. #### 执行对象检测 进入正在运行中的容器后,可以通过调用预先训练好的模型来进行图像或视频流上的实时物体识别操作。对于 YOLO 来说,具体做法取决于所使用的实现版本;如果是采用官方提供的 darknet,则可能是这样的形式: ```shell ./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg ``` 而对于更现代的 PyTorch 实现方式(比如 Ultralytics 提供的那个),则会更加简洁直观一些: ```python from pathlib import Path import torch from PIL import Image from utils.general import non_max_suppression, scale_coords from models.experimental import attempt_load weights = 'yolov5s.pt' img_size = 640 conf_thres = 0.25 iou_thres = 0.45 device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') model = attempt_load(weights, map_location=device) def detect(image_path): img = Image.open(Path(image_path)) # ... 推理过程 ... detect('/app/data/test_image.png') ``` 这段代码片段展示了如何加载预训练权重、设置设备选项以及定义简单的检测函数.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值