竞赛Docker提交指南
有不少比赛在赛后代码复现的环节需要以Docker的形式提交代码,甚至有些比赛每次提交都需要提交Docker这样做的好处则是使得测试集不可见,从而杜绝手工标注等违规操作,与此同时增加了提交的复杂度。
老肥在上面也吃了不少苦头,下面对Docker提交代码进行流程的简单梳理,方便后续参考。
简介
Docker是开源的应用容器引擎,Docker镜像则指的是将代码和运行环境打包到成一个只读文件,可以生成可执行容器,类似于:程序设计中类(镜像)和对象(容器)的关系。
Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
构建Docker并打包
Docker的安装还是比较轻松的,照着官方文档
https://docs.docker.com/engine/install
选择对应的操作系统进行安装即可。
这里采用Dockerfile的方式来构建Docker镜像,一个相对通用的Dockerfile模板内容如下(Python版本为3.7,requirements.txt需要根据自身需要说明对应库的版本):
# 拉取基础镜像
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是必须的,不然后续的库会安装失败。
一些其他的基础镜像可以参考
(来自阿里云:https://tianchi.aliyun.com/forum/postDetail?spm=5176.12281976.0.0.708a2966t0u5qh&postId=67720)
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
接着通过命令构建镜像,镜像名和版本都可以自己定义。
docker build -t <镜像名>:<版本> .
通过运行命令可以检验代码是否有问题(其中run.sh是自己封装的入口脚本,放在镜像的工作目录下)。
docker run <镜像名>:<版本> sh run.sh
如果需要挂载目录(将宿主机目录挂载到容器中)的可以采用以下命令:
docker run -v <宿主机路径>:<容器路径> <镜像名>:<版本> sh run.sh
构建并验证完成后可以通过如下命令进行镜像打包,命令如下:
docker save -o <打包名> <镜像名>:<版本>
打包完,还可以通过加载镜像包来进行加载验证,命令如下:
docker load -i <打包名>
成堆的镜像非常占用空间,如果需要删除所有
镜像,则可以采取如下命令,先停止容器再删除镜像,如果是windows系统则需要在powershell中运行以下命令。
docker container stop $(docker container ls -aq)
docker rmi -f $(docker images -q)
相关文章
- docker入门(利用docker部署web应用)[通俗易懂]
- docker 常用命令
- AX9000 Docker 部署指南
- docker入门终极指南,这是我见过最好的教程
- linux export命令找不到_docker执行容器内的shell
- Docker常用命令大全,看这篇文章就够了!
- 最强微服务部署工具——Docker内容详解
- 【已解决】Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runnin
- 【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?
- Docker服务的启动命令(systemctl start docker)
- Docker服务的停止命令(systemctl stop docker)
- docker使用笔记VII -- Scrapy
- 怎么安装Docker?
- 【Docker 系列】docker 学习 一,Docker的安装使用及Docker的基本工作原理
- 【Docker 系列】docker 学习八,Docker 网络
- Docker本地镜像发布到私有库
- 使用 Docker 和 Alpaca LoRA 对 LLaMA 65B 大模型进行 Fine-Tune
- docker的安装与使用详解程序员
- Linux下Docker安装指南(linux下docker安装)
- Docker-数据管理介绍
- none 和 host 网络的适用场景 – 每天5分钟玩转 Docker 容器技术(31)
- Systemd 对垒 Docker
- 新手指南:通过Docker在Linux上托管.NET Core
- 使用 Docker 轻松安装 MySQL 数据库(docker安装mysql)
- 的docker容器创建并使用Docker容器启动Redis数据库(创建并启动名为redis)