【开发】docker部署mmdetection

写在前面

开工咯~新年第一个打工日探索一下docker开发目标检测,今天探索了关于windows docker、nvidia-docker、ssh docker容器、docker容器端口转发,至此完成了docker的入门操作,很惊叹其轻量化打包环境的作用,但目前还不清除其用武之地,后续会继续探索。

windows docker

Docker Desktop是适用于Windows的Docker桌面,是Docker设计用于在Windows 10上运行。它是一个本地 Windows 应用程序,为构建、交付和运行dockerized应用程序提供易于使用的开发环境。Docker Desktop for Windows 使用 Windows 原生 Hyper-V 虚拟化和网络,是在 Windows 上开发 Docker 应用程序的最快、最可靠的方式。Windows 版 Docker 桌面支持运行 Linux 和 Windows Docker 容器。

安装windows docker destop参考链接【全面详细】Windows10 Docker安装详细教程

nvidia-docker

NVIDIA于2016年开始设计NVIDIA-Docker已便于容器使用NVIDIA GPUs。 第一代nvidia-docker1.0实现了对docker client的封装,并在容器启动时,将必要的GPU device和libraries挂载到容器中。但是这种设计的方式高度的与docker运行时耦合,缺乏灵活性。存在的缺陷具体如下:

  • 设计高度与docker耦合,不支持其它的容器运行时。如: LXC, CRI-O及未来可能会增加的容器运行时。
  • 不能更好的利用docker生态的其它工具。如: docker compose。
  • 不能将GPU作为调度系统的一种资源来进行灵活的调度。
  • 完善容器运行时对GPU的支持。如: 自动的获取用户层面的NVIDIA Driver libraries, NVIDIA kernel modules, device ordering等。
  • 基于上面描述的这些弊端,NVIDIA开始了对下一代容器运行时的设计: nvidia-docker2.0。

详细nvidia-docker 2.0参考链接NVidia Docker介绍
在docker运行mmdetection时需要安装nvidia-docker,具体安装可搜索安装,并将容器的daemon configuration file修改runtimes方式为nvidia,详细参考nvidia-docker部署并配置GPU机器学习环境

部署好一切后就可以在docker容器中开始运行mmdetection,具体操作参考全网最细 | 教你如何在 docker 容器下使用 mmdetection 训练自己的数据集

ssh docker container & docker port transfer

如果想远程连接docker容器那就需要再容器里装好openssh,并开启相关端口,这时我通过docer容器里ifconfig看ip为172.17.0.2,但是我的宿主机并不能ping通,不过在创建docker容器时可以采用端口映射,这样就可以用宿主机的ip和端口来ssh远程连接容器了(这是一个笨方法,不过也算走通了远程控制docker容器)。
docker run --runtime=nvidia --name mmdet -p 8828:22 -i -t apulistech/mmdetection /bin/bash
这里将宿主机的8828端口映射到容器的22端口,从而就可以用宿主机的ip和8828端口。以下是示例,本机在之前已经和宿主机采用zerotier进行内网组网。本机ip:192.168.192.98,宿主机是192.168.192.67。
在这里插入图片描述

在这里插入图片描述

### 回答1: docker mmdetection是基于Docker容器技术搭建的mmdetection深度学习框架环境。通过使用docker,可以轻松地部署和管理mmdetection的配置文件、代码和数据集,同时提高了系统的可移植性、灵活性和可扩展性。 ### 回答2: Docker是一个开源平台,可以让开发者和系统管理员轻松地打包、部署和运行应用程序,而不用担心程序之间相互干扰或者受到底层系统的限制。MMDetection是一个基于深度学习实现的目标检测框架,它支持多种模型,包括 Faster R-CNN、Mask R-CNN、SSD、RetinaNet等。使用Docker部署MMDetection,可以让用户更加方便、快捷地使用MMDetection进行目标检测模型的建立和训练。 首先,使用Docker可以减轻开发者的负担,使得安装和配置环境变得更加简单和易于维护。开发者只需要通过Docker镜像构建并启动容器,就可以得到预建的MMDetection软件环境,而不需要费心地安装和配置这些依赖项。这也意味着开发者可以在不同的计算平台上部署相同的环境,避免繁琐的环境搭建步骤。 其次,使用Docker运行MMDetection还可以利用其灵活的快照和镜像管理功能,方便开发者和团队共享和追溯开发和测试过程中的环境状态。这样,团队成员之间可以更灵活地交流和协作,达成更高效的开发合作。 需要注意的是,使用Docker部署MMDetection时需要考虑系统资源的分配。在就算硬件环境相同的情况下,不同的Docker容器实例可能需要分配不同的系统资源来满足不同的需求,比如CPU、内存等。因此,开发者需要谨慎地评估和分配资源,确保系统不会因为资源不足而受到严重影响。 综上所述,使用Docker部署MMDetection是一种比较便利和灵活的方法,它可以提高开发效率和协作管理的能力,并保证了环境的一致性和稳定性。随着Docker技术的进一步发展和完善,更多的应用场景将会在未来被探索和实现。 ### 回答3: Docker是一个虚拟化平台,它利用Linux容器(LXC)技术,在一个Linux系统中运行多个独立的容器,每个容器拥有独立的文件系统、网络和进程空间。通过Docker,可以快速创建、部署和运行应用程序,从而帮助开发人员简化开发流程,提高应用程序的可靠性和可维护性。 Mmdetection是一款基于深度学习的目标检测框架,它支持主流的目标检测算法,如Faster R-CNN,Mask R-CNN等。由于其具有良好的性能和良好的可维护性,它已被广泛应用于各种场景中,如智能安防、自动驾驶等。 将Dockermmdetection结合起来,可以更便捷地使用mmdetectionDocker可以帮助用户快速构建mmdetection的环境,并通过容器的形式进行部署和管理。这样做的好处在于,用户不需要关心环境配置和版本问题,只需要下载相应的Docker镜像,即可使用mmdetection。 在使用Docker+mmdetection时,用户可以按照以下步骤进行操作: 1.下载Docker镜像:用户可以从Docker Hub上下载包含mmdetection的镜像,例如,可以使用以下命令进行下载:docker pull open-mmlab/mmdetection:v2.12.0 2.启动Docker容器:用户可以使用以下命令启动容器docker run -it –gpus all-open-mmlab/mmdetection:v2.12.0 /bin/bash 3.在容器中使用mmdetection:一旦启动了容器,用户就可以在其中使用mmdetection了。例如,可以使用以下命令来训练mmdetection模型:python tools/train.py configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py;或者使用以下命令测试已经训练好的模型:python tools/test.py configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py work_dirs/faster_rcnn_r50_fpn_1x_coco/latest.pth –eval bbox。 4.保存容器状态:如果用户需要保存容器状态,可以使用以下命令将容器状态保存到镜像中:docker commit CONTAINER_ID open-mmlab/mmdetection:v2.12.0 使用Docker+mmdetection可以极大地简化mmdetection部署和管理。因为Docker容器可以在不同的机器上运行,所以用户可以将mmdetection的环境打包成容器,只需下载相应的镜像并启动容器即可快速部署mmdetection。另外,因为Docker容器是独立的,所以用户可以避免环境配置和版本问题,增加了应用程序的可靠性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值