Docker比赛使用流程
可以借鉴下面的入门教程:https://tianchi.aliyun.com/competition/entrance/231759/tab/226
这是一个详细解释:https://www.cnblogs.com/shayue/p/12364155.html
一、建立阿里云镜像仓库
首先在https://cr.console.aliyun.com/cn-shanghai/instances/repositories建立一个私有仓库,定义命名空间。在右侧点击管理页面可以看到一些常用的操作,例如登陆账号、拉取镜像、推送镜像等等。
# 登陆账号
$ sudo docker login --username=火星娃勇闯魔晶岛 registry.cn-shanghai.aliyuncs.com
# 从registry拉取镜像
$ sudo docker pull registry.cn-shanghai.aliyuncs.com/hxm_docker_test/mmdet_tc_2021:[镜像版本号]
# 推送到registry
$ sudo docker login --username=火星娃勇闯魔晶岛 registry.cn-shanghai.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/hxm_docker_test/mmdet_tc_2021:[镜像版本号]
$ sudo docker push registry.cn-shanghai.aliyuncs.com/hxm_docker_test/mmdet_tc_2021:[镜像版本号]
二、配置本地镜像
-
首先建立一个submission的文件夹
这里需要根据比赛的要求来进行设计(一般包含Dockerfile(固定名称)、run.sh、result.json等等)
Dockerfile的设计如下:
# Base Images ## 从天池基础镜像构建 FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3 # 这个时ali的镜像列表 # https://tianchi.aliyun.com/forum/postDetail?spm=5176.12586973.0.0.28cd6448z1i5oZ&postId=67720 ## 把当前文件夹里的文件构建到镜像的根目录下 ADD . / ## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行) WORKDIR /
镜像启动后统一执行 sh run.sh
CMD [“sh”, “run.sh”]
run.sh的设计如下:
python hello_world.py
三、本地镜像的测试
-
首先建立镜像(
registry.~~~
那个是你的公网地址,用自己的仓库地址替换,:1.0
是版本号)docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .
这里可能会遇到一些问题:
-
没登陆账号,用
一
中的登陆账号
命令先登陆一下,完了再传 -
版本号重复,会导致之前的镜像
TAG
变成<none>
,因此不需要之前的镜像时要及时删除,删除命令如下:扫描二维码关注公众号,回复: 16633806 查看本文章docker rmi IMAGE ID # 如果遇到无法删除的情况,那么先用如下命令查看一下container在占用 docker ps -a #完了用如下命令删除对应的containrer docker rm CONTAINER ID
-
-
构建好镜像之后,使用如下命令可以测试一下看看有问题没有
CPU镜像:
docker run your_image sh run.sh
GPU镜像:(有待考证)# 使用所有GPU $ docker run --gpus all nvidia/cuda:9.0-base nvidia-smi # 使用两个GPU $ docker run --gpus 2 nvidia/cuda:9.0-base nvidia-smi # 指定GPU运行 $ docker run --gpus '"device=1,2"' nvidia/cuda:9.0-base nvidia-smi
四、本地镜像的上传
-
如果前面都没有问题了,那就传到自己的仓库就行了
docker push registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0
- 如果遇到上传失败,可能是没登陆账号,用
一
中的登陆账号
命令先登陆一下,完了再传
- 如果遇到上传失败,可能是没登陆账号,用
五、比赛结果提交
- 配置一下自己的镜像路径、用户名和密码就好了
六、常用命令
# 查看docker 列表
docker images
# 查看容器列表
docker ps -a
# 启动,进入docker 使用bash方式
dockers run -it IMAGE ID /bin/bash
# 删除容器
docker rm CONTAINER ID
# 退出镜像
exit
# 进入容器
docker attach CONTAINER ID
# 把容器保存成镜像
docker commit CONTAINER ID REPOSITY_NAME:TAG
# GPU运行docker
docker run --gpus '"device=3"' -it --name hxm_test(CONTAINER_NAME) IMAGE_ID /bin/bash