阿里雲天池新人賽——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)等待結果,完美結束

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM