linux pandas教程_竞赛中的Docker使用教程
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?gpasswd?-a?ailight(user)?docker
??newgrp?docker
- 修改鏡像和容器的保存路徑
4 阿里云鏡像服務
https://tianchi.aliyun.com/competition/entrance/231759/tab/174
按操作流程開通我們所做比賽的鏡像倉庫,成功后如圖
5 Docker操作(只展示可能常用到的)
示例:
- 指定容器內目錄與宿主機目錄共享(:?之前是宿主機文件夾,之后是容器需共享的文件夾)(聯網)
- Docker訪問容器
- 導出鏡像到文件&&導入鏡像文件
docker?load?
5 制作比賽鏡像以及提交
5.1 基礎鏡像的查找和下載
pytorch1.6.0+py38+cuda10.2
??docker?pull?wangkenpu/pytorch1.6.0-hvd-apex-py38-cuda10.2-cudnn7:202008275.2 安裝我們所需要的包(兩種方法)
- 編寫Dockerfile,安裝我們所需要的包
- FROM :從指定鏡像中創建
- RUN在當前鏡像基礎上執行指定命令,并提交為新的鏡像
- COPY復制本地主機的到容器中的
- WORKDIR /path/to/workdir 配置工作目錄
- ENTRYPOOINT ["executable", "param1", "param2"]
- 配置容器啟動后執行的命令
- 詳見http://www.dockerinfo.net/dockerfile%E4%BB%8B%E7%BB%8D 介紹
- 直接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使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 明查|中国高铁“一公里耗电一万度”?太假
- 下一篇: 花甲之年指的是多少岁 ?蚂蚁庄园3.17