docker深度学习使用教程(二)

部署运行你感兴趣的模型镜像

docker深度学习使用教程(二)

本教程介绍如何通过 Dockerfile 构建深度学习环境,并运行带 GPU 支持的容器。适用于如 YOLO、mmdet3d、BEVFusion 等模型部署。

一、增加docker镜像源和代理

  1. 打开docker管理工具daemon配置文件,sudo vim /etc/docker/daemon.json(可能会没有)

  2. 复制以下docker镜像源(可以pull镜像)和代理配置(可以push镜像)
    {
    “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”

    ],
    “proxies”: {
    “http-proxy”: “http://127.0.0.1:7897”,
    “https-proxy”: “http://127.0.0.1:7897”
    }

}

配置镜像

根据dockerfile配置文件

重启的docker保护
sudo systemctl restart docker

重启docker,如果执行不成功可能docker并未正确安装,重新安装docker(docker深度学习使用教程一

执行dockerfile
构建镜像

在包含 Dockerfile 的目录下,打开终端执行:

docker build -t bevfusion:v1 .
说明:

- `-t bevfusion:v1`:为镜像命名为 `bevfusion`,版本为 `v1`
- `.` 表示 Dockerfile 在当前目录
构建并运行容器

执行如下命令(根据需求增删配置项:GPU、网络及其映射、是否允许使用图形界面、将文件夹链接到docker,并删除我写的说明项)

docker run -it --gpus all
  --network=host \
  --env="DISPLAY=$DISPLAY" \
  --env="QT_X11_NO_MITSHM=1" \
  --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
  --volume="$HOME/my_workspace:/workspace" \ 
  --name my_conda_container \ 
  bevfusion:v1

-it	启动交互式终端
--gpus all	允许容器使用所有 GPU(需 NVIDIA Container Toolkit)
--network=host	容器使用主机网络,适用于 ROS/GPU调试等
--env="DISPLAY=$DISPLAY"	传递主机的 X11 显示变量,用于 GUI 显示
--env="QT_X11_NO_MITSHM=1"	避免 Qt 图形界面在某些 X11 共享内存问题
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw"	映射 X11 的套接字,容器可以调用主机图形显示系统
--volume="$HOME/my_workspace:/workspace"	挂载主机目录 $HOME/my_workspace 到容器内 /workspace
--name my_conda_container	指定容器名称为 my_conda_container
bevfusion:v1	使用镜像 bevfusion:v1 运行容器
问题总结
  • 问题一:nvidia无法支持docker运行–gpus all
    解决思路:
    (1)添加 NVIDIA GPG 密钥
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -

(2)添加 NVIDIA Docker 仓库

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

(3)更新并安装

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

(4)重启docker

sudo systemctl restart docker
  • 问题二:docker 运行dockerfile缺少环境,在dockerfile中增加所缺少的命令RUN pip install timm

  • 问题三:docker 容器打开后立即退出,docker启动的时候需要一个前台环境,如果运行在后台,容器也会随之结束,使用tail -f 让容器保持一个前台运行(有的容器没有tail会报错,可以在dockerfile文件中增加RUN apt-get update && apt-get install -y coreutils )

  • 问题四:镜像无法激活环境
    查看init以后的~/.bashrc,发现conda是根据shell的类型执行相应的安装
    安装完成conda以后,直接执行相同的操作,启动/bin/bash时默认就会激活base环境

ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh
echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc      #
echo "conda activate base" >> ~/.bashrc 
export PATH="/opt/conda/bin:$PATH"
echo "conda activate base" >> ~/.bashrc

常用命令

这里为大家准备了一些docker常用命令以作参考

镜像操作

# 查看本地镜像
docker images

# 拉取镜像(注意需配置镜像源)
docker pull ubuntu:20.04

# 删除镜像
docker rmi ubuntu:20.04

# 构建镜像(当前目录有 Dockerfile)
docker build -t my_image:latest .

# 查看远程仓库镜像(需登录)
docker search tensorflow

容器命令


# 运行容器(交互式)
docker run -it ubuntu:20.04

# 指定容器名称 + 自动删除 + 执行 bash
docker run --rm -it --name test_container ubuntu bash

# 后台运行
docker run -d --name web nginx

# 查看运行中的容器
docker ps

# 查看所有容器(包括已停止)
docker ps -a

# 停止容器
docker stop 容器ID或名称

# 启动容器
docker start 容器ID或名称

# 重启容器
docker restart 容器ID或名称

# 删除容器
docker rm 容器ID或名称

docker commit 70b218244cf7 yolov12:v1.0
docker login
sudo docker tag 7d5a0bc61f9e lifeiyu6661/yolov12:v1.0
sudo docker push lifeiyu6661/yolov12:v1.0

docker save -o yolov12.tar yolov12:latest

docker load -i yolov12.tar

您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值