zoukankan      html  css  js  c++  java
  • 阿里云天池新人赛——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)等待结果,完美结束

  • 相关阅读:
    tensorflow初次接触记录,我用python写的tensorflow第一个模型
    java编写service详细笔记
    python聚类算法实战详细笔记 (python3.6+(win10、Linux))
    python kmeans实战
    C语言-apache mod(模块开发)-采用apxs开发实战(centos7.2 linux篇)
    C语言-apache mod(模块开发)-采用VS2017开发实战(windows篇)
    redis集群配置及运行命令(windows和centos)附Python测试范例代码
    centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本)
    mysql互为主从实战设置详解及自动化备份(Centos7.2)
    keepalived安装配置实战心得(实现高可用保证网络服务不间断)
  • 原文地址:https://www.cnblogs.com/zdm-code/p/12823611.html
Copyright © 2011-2022 走看看