problem

阿里云天池 Docker练习场(入门赛) 操作步骤_Docker

solution

1、搭建本地docker环境

Docker是什么

  • Docker 属于Linux 容器的一种封装,提供简单易用的容器使用接口。
  • docker只能安装在Linux环境下。

Linux的Docker安装

  • centos7+宝塔面板

Windows下的Docker安装

  • WSL2+docker desktop

2、搭建阿里云docker环境

首先进入阿里云容器镜像仓库,注册一个免费的个人版实例
​​​ https://cr.console.aliyun.com/​阿里云天池 Docker练习场(入门赛) 操作步骤_容器_02
进入实例以后,切换标签页到命名空间,创建地址唯一的命名空间
阿里云天池 Docker练习场(入门赛) 操作步骤_docker_03
然后切换到镜像仓库,创建一个镜像仓库。
注意根据赛题要求,选择地域为上海。下一步后选择本地仓库,完成创建。
阿里云天池 Docker练习场(入门赛) 操作步骤_容器_04
创建后点击管理进入页面,即可获得公网地址
阿里云天池 Docker练习场(入门赛) 操作步骤_json_05

3、在本地完成题目

创建一个项目文件夹(命名随意),在此文件夹下创建以下三个文件。

阿里云天池 Docker练习场(入门赛) 操作步骤_docker_06


阿里云天池 Docker练习场(入门赛) 操作步骤_容器_07

  • Dockerfile文件
# Base Images
## 从天池基础镜像构建
FROM /tcc-public/python:3

## 把当前文件夹里的文件构建到镜像的根目录下
ADD . /

## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行)
WORKDIR /

## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]
  • run.sh(注意需要有可执行权限)
python test.py
  • test.py(题目提交文件)
import csv
import json

sum = 0
temp = []
with open('./tcdata/num_list.csv') as f:
f_csv = csv.reader(f)
for row in f_csv:
sum += int(row[0])
temp.append(int(row[0]))

temp.sort(reverse=True)

if len(temp) > 10:
temp = temp[:10]
result = {
'Q1': 'Hello world',
'Q2': sum,
'Q3': temp
}

f = open('result.json', 'w', encoding='utf-8')
json.dump(result, f, indent=4, ensure_ascii=False)

import csv
import json
sum = 0
temp = []
with open('./tcdata/num_list.csv') as f:
f_csv = csv.reader(f)
for row in f_csv:
sum += int(row[0])
temp.append(int(row[0]))

temp.sort(reverse=True)

if len(temp) > 10:
temp=temp[:10]
result = {
'Q1':'Hello world',
'Q2':sum,
'Q3':temp,
}
f = open('result.json','w')
json.dump(result,f,indent=4,ensure_ascii=False)
  • 本地测试
    在当前目录创建tcdata文件夹,在其中创建num_list.csv文件
    num_list.csv
12
213
413
55
12
12
44
5
1
8
987
3
3

执行命令​​./run.sh​​​或 ​​python3 test.py​​​后可以获得以下文件
result.json

{
"Q1": "Hello world",
"Q2": 1768,
"Q3": [
987,
413,
213,
55,
44,
12,
12,
12,
8,
5
]
}

4、 提交文件到阿里云

(1)进入刚才的项目文件夹,登录阿里云Docker Registry(账户密码为第2步创建时输入的)

docker login --username=你的用户名 

阿里云天池 Docker练习场(入门赛) 操作步骤_json_08

(2)开始构建Dockerfile

docker build -t /命名空间/你的仓库:版本号 .
#注意这里有 .

#registry.xxxx其实就是公网地址,然后后面跟着( :版本号 . )

阿里云天池 Docker练习场(入门赛) 操作步骤_docker_09

(3)上传docker镜像

docker push /命名空间/你的仓库:版本号
# 这里没有 .

阿里云天池 Docker练习场(入门赛) 操作步骤_阿里云_10

5、 去比赛页面提交

镜像路径为

/命名空间/你的仓库:版本号
# 没有.

阿里云天池 Docker练习场(入门赛) 操作步骤_容器_11