docker部署yolov5
前置工作:
安装dockers前的准备工作:
1.安装依赖包
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
2.设置阿里云docker-ce镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装dockers
1.
#yum install -y docker-ce
yum install docker-ce docker-ce-cli containerd.io
2.启动并开机自启
systemctl start docker
systemctl enable docker
docker version
3.配置国内镜像源
#3.1创建docker配置文件目录
mkdir -p /etc/docker
#3.2添加配置内容
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://vsxcs7sq.mirror.aliyuncs.com"]
}
EOF
#3.3重启docker
sudo systemctl daemon-reload
systemctl restart docker
dockers可视化工具(可选):
docker search portainer
#拉取镜像命令
docker pull portainer/portainer
#查看镜像命令
docker images
#创建数据卷
docker volume create portainer_data
#启动容器
docker run -d -p 9009:9000 --restart=always --name prtainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
#查看启动中的容器
docker ps
账号admin
密码admin234567
IP:192.168.2.4:9009如果安装错可以卸载
#删除docker-ce命令
yum remove docker-ce
#删除镜像、容器、配置文件等内容
rm -rf /var/lib/containerd
rm -rf /var/lib/docker
记一下docker常用命令:
docker search --镜像名 搜索仓库镜像
docker pull --镜像名 拉取镜像
docker ps 查看目前正在运行的所有容器 (-a 显示包括已经停止的容器)
docker rmi image_id/image_name 删除镜像
docker build 使用Dockerfile创建镜像
docker run 运行容器
docker exec 进入容器中执行命令 (例如:docker exec -it container_id/container_name /bin/bash)
docker logs container_id/container_name 查看容器日志(例如:docker logs -f -t --tail 10 container_id )
docker start container_id/container_name 启动容器
docker restart container_id/container_name 重启容器
docker stop container_id/container_name 停止容器
docker rm container_id/container_name 删除容器(只能删除已停止的容器)
更多的命令可以通过docker help命令来查看。yolov5构建镜像:
找到yolov5dockerfile文件所在位置使用 docker build -t yolov5:5.0 . 构建:
# YOLOv5 🚀 by Ultralytics, AGPL-3.0 license
# Builds ultralytics/yolov5:latest image on DockerHub https://hub.docker.com/r/ultralytics/yolov5
# Image is CUDA-optimized for YOLOv5 single/multi-GPU training and inference
# Start FROM PyTorch image https://hub.docker.com/r/pytorch/pytorch
FROM pytorch/pytorch:2.0.0-cuda11.7-cudnn8-runtime
# docker pull pytorch/pytorch:2.0.0-cuda11.7-cudnn8-runtime
# Downloads to user config dir
ADD https://ultralytics.com/assets/Arial.ttf https://ultralytics.com/assets/Arial.Unicode.ttf /root/.config/Ultralytics/
# Install linux packages
ENV DEBIAN_FRONTEND noninteractive
RUN apt update
RUN TZ=Etc/UTC apt install -y tzdata
RUN apt install --no-install-recommends -y gcc git zip curl htop libgl1 libglib2.0-0 libpython3-dev gnupg
# RUN alias python=python3
# Security updates
# https://security.snyk.io/vuln/SNYK-UBUNTU1804-OPENSSL-3314796
RUN apt upgrade --no-install-recommends -y openssl
# Create working directory
RUN rm -rf /usr/src/app && mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Copy contents
COPY . /usr/src/app
# Install pip packages
COPY requirements.txt .
RUN python3 -m pip install --upgrade pip wheel
RUN pip install --no-cache -r requirements.txt albumentations comet gsutil notebook \
coremltools onnx onnx-simplifier onnxruntime 'openvino-dev>=2023.0'
# tensorflow tensorflowjs \
# Set environment variables
ENV OMP_NUM_THREADS=1
# Cleanup
ENV DEBIAN_FRONTEND teletype
# Usage Examples -------------------------------------------------------------------------------------------------------
# Build and Push
# t=ultralytics/yolov5:latest && sudo docker build -f utils/docker/Dockerfile -t $t . && sudo docker push $t
# Pull and Run
# t=ultralytics/yolov5:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all $t
# Pull and Run with local directory access
# t=ultralytics/yolov5:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all -v "$(pwd)"/datasets:/usr/src/datasets $t
# Kill all
# sudo docker kill $(sudo docker ps -q)
# Kill all image-based
# sudo docker kill $(sudo docker ps -qa --filter ancestor=ultralytics/yolov5:latest)
# DockerHub tag update
# t=ultralytics/yolov5:latest tnew=ultralytics/yolov5:v6.2 && sudo docker pull $t && sudo docker tag $t $tnew && sudo docker push $tnew
# Clean up
# sudo docker system prune -a --volumes
# Update Ubuntu drivers
# https://www.maketecheasier.com/install-nvidia-drivers-ubuntu/
# DDP test
# python -m torch.distributed.run --nproc_per_node 2 --master_port 1 train.py --epochs 3
# GCP VM from Image
# docker.io/ultralytics/yolov5:latest
构建完成后,开始生成容器
2.生成容器:
nvidia-docker run -it -p 2224:22 -p 6006:6006 --ipc=host -v /home/slifeai/project_object/num_2/yolov5-5.0:/usrc/app --name yolov5_train yolov5:5.0 /bin/bash
3.将训练数据拷贝进容器中
docker cp litter/ 8ac6770f1edb:/usr/src/app //的·litter是自己的datasets文件
4.开始训练
python train.py --data data/mydata.yaml --cfg models/yolov5s.yaml --weights 'yolov5s.pt' --batch-size 64
报错记录:
1.connect: connection refused
docker 拉取镜像时报错error pulling image configuration: download failed after attempts=6: dial tcp 128.242.240.149:443:
原因分析:因为国内网络墙的比较厉害访问不同,需要配置不同的源地址
解决方案:
依次输入下列指令即可,为防止镜像不生效,设置多个镜像
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2.拉取pytorch时报错:
ERROR: failed to solve: pytorch/pytorch:2.0.0-cuda11.7-cudnn8-runtime: failed to resolve source metadata for docker.io/pytorch/pytorch:2.0.0-cuda11.7-cudnn8-runtime: failed to copy: httpReadSeeker: failed open: failed to do request: Get "https://do.nark.eu.org/v2/pytorch/pytorch/blobs/sha256:372afdac29158ffaa6644e58f068d374101a5c8e05db3c7c88b765da7788b44f?ns=docker.io": dial tcp: lookup do.nark.eu.org on 114.114.114.114:53: no such host
docker仓库:
https://hub.docker.com/参考链接:
https://blog.csdn.net/Father_of_Python/article/details/132731942
https://blog.csdn.net/weixin_43755251/article/details/127512751
https://blog.csdn.net/dear_queen/article/details/119644226
评论区