阿里天池【入门】Docker练习场 满分操作

 

1. 任务描述

本题目主要是为了练习docker的基本操作, 题目描述如下:

2. 开始干活

首先分析一下要准备的东西:

  • docker环境
  • 镜像仓库
  • 需要pull的镜像文件
    • Dockerfile
    • 程序代码(py文件)
    • run.sh

2.1 搭建docker环境

下面开始准备,本文使用的docker环境搭建在centos 7服务器上,其他操作系统命令可能有所不同

搭建docker环境可以参考官方链接

2.2 创建阿里云容器镜像仓库

申请阿里云容器镜像服务(免费),并创建仓库,创建过程中根据提示选择本地仓库设置命名空间等即可,创建完成后进入主页面:

注意下图中的公网地址,shanghai,命名空间,仓库名,使用时结合自己的进行替换即可

然后开始构建镜像并推送,将天池准备的基础python镜像拉入,在linux终端输入

docker pull registry.cn-shanghai.aliyuncs.com/tcc-public/python:3

2.3 准备题目所需的文件

首先创建一个文件夹命名为:tianchi_submit_demo(可以根据需要命名)

下面在此文件夹下创建如下三个文件:

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

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

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

## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.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文件,随便输入几个正整数,用于在本地测试,

12
213
413
55
12
12
44
5
1
8
987
3
3

进入tianchi_submit_demo目录,输入

./run.sh

生成result.json文件,检查结果是否正确,下面是例子的结果,发现没有问题,准备上传文件

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

2.4 提交

进入tianchi_submit_demo目录,以下操作都在此目录下进行

  • 登录阿里云Docker Registry(详细的操作在容器镜像服务管理页面都有介绍)
docker login --username=你的用户名 registry.cn-shanghai.aliyuncs.com

输入密码...

登录成功

  • 开始构建Dockerfile:
docker build -t registry.cn-shenzhen.aliyuncs.com/命名空间/你的仓库:版本号 .
#注意这里有  .


# 官方给的例子是
docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .

把test_for_tianchi和test_for_tichisubmit替换为你的就行,可以参考最开始截图中的公网地址

构建成功

  • 上传镜像
docker push registry.cn-shanghai.aliyuncs.com/命名空间/你的仓库:版本号
# 这里没有 .
# 第一次push比较慢,耐心等待

上传成功

  • 提交结果等待出分

镜像路径就是

registry.cn-shenzhen.aliyuncs.com/命名空间/你的仓库:版本号
# 没有 .
  • 等待运行结果,查看成绩,大功告成

第一次上传仓库的密码输错了有点尴尬...

记录到此结束!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值