一、Mac 安装Docker客户端
参考教程:菜鸟教程Mac安装Docker, 选择第二种手动安装方法, 我下载的版本是Stable.
二、天池官方教程提交结果
【入门】Docker练习场
左侧菜单栏找到“手把手教程”, 直接从第二步开始
最重要的是构建镜像并推送的过程:
1、pull一个镜像(很多人用centos和Ubuntu)
#1、推荐使用阿里天池默认的镜像
docker pull registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
2、 准备所需文件
文件目录如下:
|–Dockerfile # 可以根据Dockfile创建镜像
|–hello_world.py # 代码部分
|–result.json # 保存代码运行结果
|–run.sh # 容器运行时默认执行的脚本文件
⚠️注意这里: 不需要建立数据文件夹, 因为比赛要求的/tcdata/num_list.csv数据在你提交文件后官方后台会自动匹配, (我在这里迷惑了很久, 我只写了程序, 没有生成结果,怎么评分?)
(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) hello_world.py文件
# coding:utf-8
import json
import csv
file_name = '/tcdata/num_list.csv'
data = []
# 第一题,直接写入 Hello world
result = {
"Q1": "Hello world",
"Q2": 0,
"Q3": []
}
# 第二题,求和
with open(file_name, 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
data.append(int(row[0]))
sum = sum(data)
result['Q2'] = sum
# 第三题
result['Q3'] = sorted(data, reverse=True)[0:10]
# 保存到 result.json
with open('result.json', 'w', encoding='utf-8') as f:
json.dump(result, f)
(3) run.sh文件(Linux的可执行文件)
python hello_world.py
准备完了, 该推送结果到自己注册镜像托管的命名空间了:
这里我采用的方法是, 在服务器上直接推送.
(1) docker login --username=XXX registry.cn-hangzhou.aliyuncs.com
这一段在阿里云“容器镜像服务”中可以查看
(2) docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .
注意这里面test_for_tianchi/test_for_tianchi_submit:1.0 部分要和注册时的名称保持一致.
命令行含义: 构建镜像
(3) docker run registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 (your_image) sh run.sh
命令行含义: 激活容器
(4) docker push registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0
命令行含义: 上传镜像
(5) 返回比赛页面, 在左侧【提交结果】中填写推送的镜像路径、用户名和密码,即可提交, 在【我的成绩】查看结果
秀成绩
祝顺利!
转载:https://blog.csdn.net/weixin_35894210/article/details/104970727