前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >竞赛Docker提交指南

竞赛Docker提交指南

作者头像
老肥码码码
发布2023-03-02 15:54:31
6840
发布2023-03-02 15:54:31
举报
文章被收录于专栏:算法与数据之美

有不少比赛在赛后代码复现的环节需要以Docker的形式提交代码,甚至有些比赛每次提交都需要提交Docker这样做的好处则是使得测试集不可见,从而杜绝手工标注等违规操作,与此同时增加了提交的复杂度。

老肥在上面也吃了不少苦头,下面对Docker提交代码进行流程的简单梳理,方便后续参考。

简介

Docker是开源的应用容器引擎,Docker镜像则指的是将代码和运行环境打包到成一个只读文件,可以生成可执行容器,类似于:程序设计中类(镜像)和对象(容器)的关系。

Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

构建Docker并打包

Docker的安装还是比较轻松的,照着官方文档

https://docs.docker.com/engine/install

选择对应的操作系统进行安装即可。

这里采用Dockerfile的方式来构建Docker镜像,一个相对通用的Dockerfile模板内容如下(Python版本为3.7,requirements.txt需要根据自身需要说明对应库的版本):

代码语言:javascript
复制
# 拉取基础镜像
FROM  registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
# 复制数据
COPY ./ ./
# 更新PIP
RUN pip3 install --upgrade pip
# 安装相关库
RUN pip install -r requirements.txt -i https://mirrors.cloud.tencent.com/pypi/simple

这里更新PIP是必须的,不然后续的库会安装失败。

一些其他的基础镜像可以参考

代码语言:javascript
复制
Python:
     registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
     registry.cn-shanghai.aliyuncs.com/tcc_public/python:3.10

TensorFlow:
     registry.cn-shanghai.aliyuncs.com/tcc-public/tensorflow:latest-py3
     registry.cn-shanghai.aliyuncs.com/tcc_public/tensorflow:2.8.0-py3
     registry.cn-shanghai.aliyuncs.com/tcc-public/tensorflow:1.1.0-cuda8.0-py2
     registry.cn-shanghai.aliyuncs.com/tcc-public/tensorflow:1.12.0-cuda9.0-py3
     registry.cn-shanghai.aliyuncs.com/tcc-public/tensorflow:1.13.1-cuda10.0-py3
     registry.cn-shanghai.aliyuncs.com/tcc-public/tensorflow:2.4.1-cuda10.1-py3

Keras:
     registry.cn-shanghai.aliyuncs.com/tcc-public/keras:latest-py3
     registry.cn-shanghai.aliyuncs.com/tcc-public/keras:latest-cuda9.0-py3
     registry.cn-shanghai.aliyuncs.com/tcc-public/keras:latest-cuda10.0-py3

pytorch:
     registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:latest-py3 
     registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:latest-cuda9.0-py3  
     registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.1.0-cuda10.0-py3
     registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.4-cuda10.1-py3
     registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.6-cuda10.1-py3
     registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.7-cuda11.0-py3
     registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.11-cuda11.3-py3

mmdetection:
     registry.cn-shanghai.aliyuncs.com/tcc-public/mmdetection:pytorch1.3-cuda10.1-py3
     registry.cn-shanghai.aliyuncs.com/tcc-public/mmdetection:pytorch1.4-cuda10.1-py3

jupyter:
     registry.cn-shanghai.aliyuncs.com/tcc-public/jupyter:gpu

ipython:
     registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch_ipython:1.4-cuda10.1-py3

nl2sql:
     registry.cn-shanghai.aliyuncs.com/tcc-public/nl2sql:base

facenet:
     registry.cn-shanghai.aliyuncs.com/tcc-public/facenet:gpu

java:
     registry.cn-shanghai.aliyuncs.com/tcc-public/java:jdk_13.0.2

接着通过命令构建镜像,镜像名和版本都可以自己定义。

代码语言:javascript
复制
docker build -t <镜像名>:<版本> .

通过运行命令可以检验代码是否有问题(其中run.sh是自己封装的入口脚本,放在镜像的工作目录下)。

代码语言:javascript
复制
docker run <镜像名>:<版本> sh run.sh

如果需要挂载目录(将宿主机目录挂载到容器中)的可以采用以下命令:

代码语言:javascript
复制
docker run -v <宿主机路径>:<容器路径> <镜像名>:<版本> sh run.sh

构建并验证完成后可以通过如下命令进行镜像打包,命令如下:

代码语言:javascript
复制
docker save -o <打包名> <镜像名>:<版本>

打包完,还可以通过加载镜像包来进行加载验证,命令如下:

代码语言:javascript
复制
docker load -i <打包名>

成堆的镜像非常占用空间,如果需要删除所有镜像,则可以采取如下命令,先停止容器再删除镜像,如果是windows系统则需要在powershell中运行以下命令。

代码语言:javascript
复制
docker container stop $(docker container ls -aq)
docker rmi -f $(docker images -q)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老肥码码码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 构建Docker并打包
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档