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

由于在阿里的淘宝商品直播识别大赛中提交结果需要用到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)等待结果,完美结束

猜你喜欢

转载自www.cnblogs.com/zdm-code/p/12823611.html