基本思想:
服务器运行环境是基于我们构建的镜像。因此我们只需用我们创建的镜像构建容器,然后每次测试的时候只需将数据和相关的代码复制到容器中运行就行了。
基本实现步骤
1.构建所需的容器(用我们生成好的镜像就行了)
a.生成镜像(注释掉Dockerfile中cmd sh 那一行之后生成)
如:docker build -t basicimg:hl .
b.用镜像生成容器
docker run -it --name=container_hl basicimg:hl bash(name 后面为容器名)
exit
c. 将数据复制到容器
docker cp d:/docker/‘Docker Toolbox’/data/ container_hl:/tcdata/
d.运行容器
如果容器未开启先开启容器
docker start container_hl
再进入容器里面
docker exec -it container_hl bash
到此容器基本构建完成,每次只需将代码或者数据复制到容器就可以完成测试了。(此步骤不需要重复)
2.测试过程(如果已有容器,则只需要每次
进入容器(docker exec -it container_hl bash),运行 sh run.sh
如果需要更换main.py 则:
1.先退出容器 exit
2.docker cp main.py_hl:/main.py (我的main.py就在运行的那个文件里面)
3.进入容器docker exec -it container_hl bash
3. 打包提交
测试无误即可打包提交。
如果不放心,可以再执行新建的容器
docker run –v /d/docker/‘Docker Toolbox’/data/:/tcdata sh run.sh
记得将之前注释掉的cmd取消一下…
dockers提交作业
前言
主要分为三部分:
开通镜像服务
本地需要的文件
打包、提交镜像,参入天池评分
开通阿里云镜像服务
本地需要的文件
自己在本地电脑上随便创建一个文件夹,比如 docker 文件夹,然后在里面添加4个文件,分别是:
1、Dockerfile 没有任何后缀的文件,里面是一些命令:
Base Images
从天池基础镜像构建
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
把当前文件夹里的文件构建到镜像的根目录下
ADD . /
指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行)
WORKDIR /
镜像启动后统一执行 sh run.sh
CMD [“sh”, “run.sh”]
2、run.sh 这个shell脚本文件,里面就一句代码:
python test.py
表示你要执行的python文件
3、test.py python代码文件,这个代码主要是比赛的代码,入门比赛里问题比较简单,代码如下:
import json
import csv
file_name = ‘/tcdata/’
#第一题,直接写入 Hello world
result = {
“Q1”: “Hello world”,
“Q2”: 0,
“Q3”: []
}
#第二题,求和
list_data = []
sum_int = 0
with open(file_name+“num_list.csv”, ‘r’, encoding=‘utf-8’) as f:
reader = csv.reader(f)
for row in reader:
list_data.append(int(row[0]))
sum_int += int(row[0])
result[‘Q2’] = sum_int
#第三题
result[‘Q3’] = sorted(list_data, reverse=True)[0:10]
保存到 result.json
with open(‘result.json’, ‘w’, encoding=‘utf-8’) as f:
json.dump(result, f)
4、result.json 用来存放结果的,比如上文中test.py就有把结果存到result.json,这个文件是空的,不需要你填写,python代码会把结果直接输入到这个文件中
上述4个文件的内容及说明都给出来了,下一个环节就是构建、上传
打包、提交、参入天池评分
首先你要有一个公网连接,这个在阿里云天池镜像管理界面可以看到,我们这里把它叫做 address 主要命令有:
#登录阿里云,需要输入账号和密码
docker login address
#构建镜像,
docker build -t address:1.0 .
#查看镜像
docker images
#push到远程仓库中
docker push address:1.0
上述是 构建和上传操作,接下来就是到天池平台上提交结果,直接提交 address:1.0 ,这个就是结果的镜像。