1 Docker 简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

2 容器化的需要和意义

  • 无法保证生产环境的操作系统以及底层库的版本Centos、Ubuntu、Debian、Fedora;gcc、glibc、gfortran
  • 一台服务器上部署多个项目,依赖不同的包,甚至python版本numpy、scipy、pandas、scikit-learn、tensorflow、keras;python2.7/3.5/3.6 pyenv并不能做到完全的隔离
  • 开发环境在做批处理,但生产环境很多都是流处理
    • 开发:用numpy读入一个文件,处理完成之后写结果
    • 生产:请在**ms内返回结果

现在越来越多的比赛在初赛或复赛的时候也是需要提交docker镜像,所以这里我以AMAP-TEAD比赛为例,做一个docker在比赛中的使用教程,比赛链接如下

https://tianchi.aliyun.com/competition/entrance/531809/introduction

3 docker&&nvidia-docker的安装及设置(Ubuntu18.04)

3.1 安装

  # 新apt包的索引  sudo apt-get update   #添加Docker仓库到apt  sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common  #添加Docker的官方GPG key  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -  sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"  #安装docker-ce  sudo apt-get update  sudo apt-get install docker-ce
  #安装nvidia-docker  curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -  distribution=$(. /etc/os-release;echo $ID$VERSION_ID)  curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list |sudo tee /etc/apt/sources.list.d/nvidia-docker.list  sudo apt-get update  sudo apt-get install -y nvidia-docker2  sudo pkill -SIGHUP dockerd

3.2 设置

  • 给用户配置docker权限
  sudo groupadd docker  sudo gpasswd -a ailight(user) docker  newgrp docker
  • 修改镜像和容器的保存路径

4 阿里云镜像服务

https://tianchi.aliyun.com/competition/entrance/231759/tab/174

按操作流程开通我们所做比赛的镜像仓库,成功后如图


5 Docker操作(只展示可能常用到的)



示例:

  • 指定容器内目录与宿主机目录共享(: 之前是宿主机文件夹,之后是容器需共享的文件夹)(联网)
  docker run -itd --net host imagename /bin/bash
  • Docker访问容器
docker exec -it CONTAINER /bin/bash
  • 导出镜像到文件&&导入镜像文件
docker save $DOCKER_IMAGE > $filenamedocker load 

5 制作比赛镜像以及提交

5.1 基础镜像的查找和下载

pytorch1.6.0+py38+cuda10.2

  docker pull wangkenpu/pytorch1.6.0-hvd-apex-py38-cuda10.2-cudnn7:20200827

5.2 安装我们所需要的包(两种方法)

  • 编写Dockerfile,安装我们所需要的包

    • FROM :从指定镜像中创建
    • RUN在当前镜像基础上执行指定命令,并提交为新的镜像
    • COPY复制本地主机的到容器中的
    • WORKDIR /path/to/workdir 配置工作目录
    • ENTRYPOOINT ["executable", "param1", "param2"]
    • 配置容器启动后执行的命令
    • 详见http://www.dockerinfo.net/dockerfile%E4%BB%8B%E7%BB%8D 介绍

  docker build -t amap_base .
  • 直接run镜像在容器里安装

    • nvidia-docker run -itd --net host image_id /bin/bash

  • nvidia-docker exec-it 1ef2652342be /bin/bash(访问容器)

在容器内部安装mmclassification,这里就不细说了 ,具体和我们平常在服务器的安装方法一致

5.3 Copy模型文件和测试代码到容器内

docker cp MMCLS.py 1ef2652342be:/amap/code/

5.4 Commit容器为新的镜像

docker commit 1ef2652342be amap:v1

构建提交镜像(run.sh&&Dockerfile)


docker build -t 天池之前创建的镜像仓库:1.0 .

5.5 本地测试

nvidia-docker run -v /data:/tcdata image sh run.sh

我用初赛B榜测试集来测试,-v 挂载本地路径/home/ailight/桌面/work_dir/amap/data/test按比赛要求挂载为/tcdata

  • 运行没有问题 在容器中也可以找到result.json

    • Docker push yourimage(提交)

5.6 提交镜像

得到了我们很菜的成绩

6 总结

Docker 非常便于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,大大减少编写代码和在生产环境中运行代码之间的延迟。

注:大家有什么想了解的也可以在下方留言告诉我们,我们也会选择做分享

linux pandas教程_竞赛中的Docker使用教程相关推荐

  1. 惠普打印机墨盒更换教程_惠普打印机加墨教程:老司机教你

    01惠普打印机加墨教程 [中关村在线原创]惠普的打印机用户众多.那么墨盒用完了怎么办?很多人想到的是找个加墨教程.这里我们作为老司机就给各位带带路,来一个惠普打印机加墨教程. 惠普打印机加墨教程 惠普 ...

  2. php 网站访问统计插件,帝国CMS教程_网站访问统计插件使用教程_好特教程

    帝国CMS教程:网站访问统计插件使用教程,先来看下效果图 上传以下图片: ********************     安装插件     ******************** 1.如果你的后台 ...

  3. docker linux 快速开窗口_技术|如何使用 Docker 快速配置数据科学开发环境?

    数据科学开发环境配置起来让人头疼,会碰到包版本不一致.错误信息不熟悉和编译时间漫长等问题.这很容易让人垂头丧气,也使得迈入数据科学的这第一步十分艰难.而且这也是一个完全不常见的准入门槛. 还好,过去几 ...

  4. linux pclint配置_静态分析工具PC-lint Plus使用教程:安装与配置

    PC-lint Plus是一种静态分析工具,通过分析C和C ++源代码来发现软件中的缺陷.与编译器一样,PC-lint Plus会解析源代码文件,执行语义分析,并构建一个抽象语法树来表示程序.PC-l ...

  5. seaborn 教程_使用Seaborn进行数据可视化教程

    seaborn 教程 "Seaborn makes the exploratory data analysis phase of your data science project beau ...

  6. python头像教程_微信好友头像全家福详细教程python版

    昨天按照大佬的代码,做了一个微信全家福的图片,后面好多人问我是怎么做的,索性我就出个详细的教程吧,我python也是三脚猫功夫,有不对的地方,还请各位大佬手下留情. 先看看成果吧 微信好友头像全家福详 ...

  7. 天视通摄像头设置教程_天视通摄像头设置教程_直播教程 | 使用虎牙伴侣背景消除,来点新鲜的直播玩法!......

    使用虎牙伴侣背景消除,来点新鲜的直播玩法! 使用绿幕背景消除,在国外的游戏主播圈里十分流行,虎牙直播上也有不少游戏主播使用背景消除功能了,这也是主播群体最常见的应用场景. 娱乐主播的话,有些直播间装修 ...

  8. 小雷盒子刷x86教程_小米盒子刷windows系统教程

    [导读]小米盒子怎么刷windows系统?相关系统问题,下面191路由网小编为大家详细解答. Bochs是一种十分轻便的使用c++编写的开源IA-32(x86)电脑模拟器,可以运行在最受欢迎的平台上. ...

  9. mysql5 workbench教程_详解MySQL Workbench使用教程

    MySQL Workbench 是一款专为 MySQL 设计的集成化桌面软件,也是下一代的可视化数据库设计.管理的工具,它同时有开源和商业化两个版本.该软件支持 Windows 和 Linux 系统, ...

最新文章

  1. python数据分析——世界杯分析预测
  2. 日志库EasyLogging++学习系列(6)—— 日志记录器
  3. 启明云端分享 | sigmastar SSD201开发板网口直连PC升级
  4. Centos搭建FTP服务
  5. php中间件怎么使用,laravel框架中间件简单使用方法示例
  6. matplotlib 画多条折线图且x轴下标非数值
  7. 我在华为做Android外包的真实经历!吊打面试官系列!
  8. git管理复杂项目代码
  9. 10- monkey日志分析
  10. Oracle数据库 - 安装教程
  11. HTTP方法的幂等性
  12. Origin2018安装与使用(整理中)
  13. 瑞星:愚人节Conficker蠕虫未在我国爆发
  14. hdoj 1570 A C
  15. js获取某年某月某天是第几周
  16. 电脑上计算机无法搜索文件,怎么搜索电脑中的文件?电脑搜索文件教程
  17. 大白话图文结合的方式讲解什么是CAP
  18. mac os操作系统如何降级
  19. Linux系统安全加固设置详细教程
  20. 写了一个增量式的爬虫,但是并不完美,希望大牛们可以指正指正!

热门文章

  1. Main execution in Scala - Scala应用的入口
  2. filter operation implementation in Gateway framework
  3. cannot open layout editor - how to fix error message
  4. how is my real odata request hijacked by Mock server
  5. 使用经过oauth验证后的github API,避免调用频次超标的问题
  6. Fiori应用里如何隐藏prospect字段
  7. CRM呼叫中心里的Java stack
  8. 2019年6月19日Jerry Wang的SAP SAP Cloud Connector练习
  9. 使用代码创建具有organization unit的opportunity
  10. SAP标准培训课程C4C10学习笔记(二)第二单元