首页 > 其他 > 详细

阿里云天池新人赛——docker练习场比赛心得

时间:2020-05-03 21:45:30      阅读:142      评论:0      收藏:0      [点我收藏+]

由于在阿里的淘宝商品直播识别大赛中提交结果需要用到docker,以前也没有用过。正好阿里提供了docker的新人赛,借此机会学习一下。

既然学习docker,首先就要了解docker是什么:

  Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口  ——摘自《百度百科》

  这里涉及到一些概念。容器:是一个视图隔离、资源可限制、独立文件系统的进程集合。什么叫视图隔离?我们都知道,一般操作系统的文件系统,各个应用之间都是互相可见的、可相互通信的。而视图隔离就使得进程和进程之间不会相互影响,它使得应用有自己独立的主机名,并可以限制其他应用对自己的可见性。资源可限制指的是我们可以控制资源的使用率,如内存大小,CPU个数等等。镜像:运行容器所需要的的文件集合。通常情况下我们会使用dockerfile来描述镜像构建的步骤。后面会具体介绍dockerfile的用法

一、环境准备

windows安装地址:https://docs.docker.com/docker-for-windows/install/

Linux采用如下命令安装即可:

$ sudo apt-get update
$ sudo apt install docker.io

二、开通阿里云容器镜像服务

(由于是在阿里云的赛场打比赛,人家肯定是要推广自己的产品的)

打开如下网址开通阿里云容器镜像服务即可:https://www.aliyun.com/product/acr?,开通完成后进行一些基本的配置就可以使用啦。

三、构建镜像并推送

在开始构建镜像之前,先附上赛题(其实题目根本不重要,都是最基本的语法,重点还是了解docker的基本使用)

技术分享图片

可以看到任务有三个,而输出要求为生成json文件。所以测试时进行如下操作。

1)首先在本地新建一个空的文件夹,命名随意(在这里我是用阿里的官方文档示例名字tianchi_submit_demo)

2)新建dockerfile文件

# Base Images
## 从天池基础镜像构建
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
## 把当前文件夹里的文件构建到镜像的根目录下
ADD . / 
## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行)
WORKDIR /
## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]

3)在文件夹新建一个python文件,命名随意(我的命名为test.py),可以先简单写一个print函数测试一下。

python test.py

4)新建run.sh文件,文件内容即为

python test.py

用来通过命令启动该程序

5)在tianchi_submit_demo目录下新建tcdata目录,并在tcdata目录下新建num_list.csv文件(本地测试用)

6)修改test.py为题目要求输入输出

 1 import csv
 2 import json
 3 
 4 print("Hello world")
 5 with open(./tcdata/num_list.csv) as f:
 6     row = csv.reader(f, delimiter=,)
 7 
 8     all_num = []
 9 
10     for r in row:
11         all_num.append(int(r[0]))
12 
13     print(len(all_num))
14     s = sum(all_num)
15 
16     sort_result = sorted(all_num, reverse=True)
17 
18     top_10 = []
19 
20     for i in range(10):
21         top_10.append(sort_result[i])
22 
23     jsondata = json.dumps({Q1: Hello world, Q2: s, Q3: top_10},sort_keys=True, indent=4, separators=(,, : ))
24     fjson = open(result.json, w)
25     fjson.write(jsondata)
26     fjson.close()

7)运行test.py,确定生成json文件且文件内容正确

8)登录阿里云docker服务

技术分享图片

 

 注意username换成自己的阿里云用户名

9)打开cmd,进入tianchi_submit_demo目录,键入如下命令构建dockerfile

docker build -t registry.cn-shanghai.aliyuncs.com/dock-l/first-learning:1.1 .

注意最后版本号后面还有个“空格+.”!!!构建成功后会显示如下界面

技术分享图片

 

10)键入如下命令上传构建好的镜像,注意千万不要忘记版本号

docker push registry.cn-shanghai.aliyuncs.com/dock-l/first-learning:1.1

 

上传成功后显示如下结果

技术分享图片

 

11)最后回到赛场提交就可以啦

技术分享图片

 

12)等待结果,完美结束

技术分享图片

 

阿里云天池新人赛——docker练习场比赛心得

原文:https://www.cnblogs.com/zdm-code/p/12823611.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!