比赛中如何以docker方式提交结果--基于mmdetction

最近参加江苏省华录杯比赛,复赛要以docker提交结果,由于是第一次参加这种检测比赛,而且对docker很不熟悉,所以花费了很大的功夫,因此写下自己的踩坑之路,希望对大家有所帮助。

首先简单的介绍下什么是docker,这里我主要说比赛中用的的部分,docker的images和containers,对于我这种只是比赛用一用docker的人来说,我觉得这是docker的核心。

images: 就是大家说的docker镜像,也可以叫做镜像。
containers: 就是容器

每当你创建一个image时相当于你只是初始化了一下,每当你运行时就会创建一个容器,容器相当于实例,感觉还是有点晦涩,所以还是以实际为例子把。

docker构建方法

1、直接pull到本地,也就是拉取到本地。我们可以在dockerhub或者阿里云或者华为云上面拉取别人开原的镜像(别人博客说阿里云华为云速度会快点,但是实际用的时候感觉速度和dockerhub差不多,可能是我姿势不对?另外说一下,dockerhub的公开镜像更多,阿里云感觉好少,所以还是建议用dockerhub),然后通过构建dockerfile来构建镜像
2、直接通过dockerfile构建

2种方法其实差别不大,最后的效果是一样的

构建流程(拉取dockerhub的镜像)

下面我以第一种方法说明,这个镜像也不知道是什么问题,在编译mmdet的时候总是提示我no cuda runtime is found,所以这个教程大家就当做教训,看看热闹,在下面我会介绍另一种方法构建流程,按照mmdet仓库dockerfile去构建,所以这个如果不想看可以直接忽略看下面的一个(这里不再介绍如何安装docker,另外如果要用gpu要安装nvidia-docker)

拉取镜像

首先,登录到dockerhub,然后搜索你想要的基础镜像,例如我想要mmdet,cuda版本为10.1,包含cudnn
在这里插入图片描述
然后终端输入:docker pull vistart/mmdetection,速度大概500kb吧,比较慢,慢慢等待就行。

构建dockerfile

在这里插入图片描述
在这里插入图片描述

上面是我的dockerfile和我的项目文件夹,project是我的总代码,依次输入你想要的依赖,这样dockerfile就构建好了。

构建镜像

终端输入:sudo nvidia-docker build -t your_image_name .(注意有个点,而且是nvidia-docker)
ok,构建结束。

构建流程(拉取mmdet仓库的镜像)

构建dockerfile

首先看下mmdet仓库dockerfile文件:
在这里插入图片描述
然后看下我的dockerfile文件:
在这里插入图片描述

大家可以根据自己的pytorch版本,cuda版本,cudnn版本改dockerfile,我在这个里面在第八行又加了一行,因为在运行时的发现提示了错误,需要这个包。

关于镜像的一些基本操作

docker start 容器 启动一个已经停止的容器
docker run --gpus all -td --name=ztd vistart/mmdetection:latest bash           #进入某个镜像,并产生一个容器
docker exec -it f5b1bb0c54e7e598ad09cc1c2f0dd2384a82ce0f0a8801865b76412696508875 bas #进入容器,f5b1bb0c5为上一步产生的容器
#进入容器后可以像在ubuntu下一样使用终端命令,去下载包,改文件,紧接着
exit #退出容器
docker commit e0246673cba9 mmdet_test16_change #提交容器,将其转为镜像,e0246673cba9为容器id,mmdet_test16_change为新镜像名字
sudo nvidia-docker run -v /home/zhaotongdong/docker_test10/project/code/data/test:/data/test/ mmdet_test16_change  #运行容器,并挂载数据。
docker cp mycontainer:/opt/testnew/file.txt /opt/test/   	#从容器拷贝文件到宿主机
docker cp /opt/test/file.txt mycontainer:/opt/testnew/	 	#从宿主机拷贝文件到容器
docker commit 容器 镜像名     					#保存修改后的容器
docker save -o 要保存的文件名 要保存的镜像         		#导出镜像,注意文件名必须是.tar格式
sudo nvidia-docker run -v /home/zhaotongdong/docker_test4/project/code/data/test:/data/test mmdet_18  ##挂载数据
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值