数据竞赛复现代码的 Docker 镜像制作指南

news2024/11/13 16:49:21

文章目录

  • 一、前言
  • 二、主要内容
    • 1. Docker Desktop?
    • 2. VMware17 + CentOS Linux + Xshell
  • 三、总结

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


一、前言


主要的要求:

  • 通过 Dockerfile 文件创建 Docker 镜像,数据 + 程序文件将以只读的方式挂载在容器内的 /data 目录下,使用相对路径,如 “./data/XX”。安装好 Python 项目的依赖库。
  • 程序入口要求:务必封装入口脚本 run.sh,放置于镜像工作目录(如果在 Dockerfile 中指定了工作目录,请放在对应目录下)。务必确保镜像正常运行(可运行 docker run -it your_image sh run.sh 验证),并生成预测结果 result_A.csv 和 result_B.csv(具体如何挂载执行的要在 README.md 文件中说明)。
  • 提供 inference_main.sh 文件作为预测程序入口,确保可以通过执行该文件来运行得到最终结果,并将结果保存到上述对应的文件路径下。

解决问题: 我该如何在 Windows 系统的笔记本电脑配置好 Docker 并调试好数据竞赛的复现代码(你有一台 Linux 内核的服务器就更容易了),然后打包提交?


二、主要内容

1. Docker Desktop?

去网上搜了一下相关的教程,Windows 环境下很多都是先装 Docker Desktop。

去官网下载安装 Docker Desktop:https://www.docker.com/products/docker-desktop/

在这里插入图片描述

  • 配置镜像加速,可以参考:https://www.cnblogs.com/ychun/p/16460332.html

  • 旧版 WSL 的手动安装步骤

Windows 安装 Docker 首先需要配置好适用于 Linux 的 Windows 子系统 WSL,以及安装好 Ubuntu
Add-AppxPackage .\ubuntu-2004.appx

Win10 子系统 Ubuntu 忘记密码解决方案
ubuntu config --default-user root
sudo passwd root

wsl -l -v
wsl.exe --list --verbose
wsl -l --running

改一下设置,Docker 镜像加速,然后拉取镜像
docker pull continuumio/conda-ci-linux-64-python3.8
docker run -i -t -p 12345:8888 continuumio/conda-ci-linux-64-python3.8

conda create -n model_paper python=3.8
source activate model_paper

能用,但使用 Docker Desktop 踩了很多坑,即使查阅了网上的很多资料和问 ChatGPT,并且 Docker Desktop 默认安装在 Windows C 盘,还不给你选择自定义目录的机会,我用着是一下就占了 10 多个 G,电脑慢慢就很卡。。。体验很差。你要安装配置 Docker Desktop 推荐先读一下这篇文章:https://juejin.cn/post/7085363544102797325

2. VMware17 + CentOS Linux + Xshell

VMware17 + CentOS Linux + Xshell is all you need!

安装配置好 VMware17、CentOS7 Linux,安装和使用 XShell,开启和配置虚拟机,用 XShell 连上就能很方便的用 Linux 命令操作了,并用 Linux 命令先安装好 Docker。然后基于 Dockerfile 构建 Docker 镜像,Dockerfile 里的内容为:

# 拉取阿里云提供的基础镜像源 Python3.7
FROM  registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
# 复制数据挂载上去  data 文件夹、requirements.txt
COPY ./data /data
COPY ./requirements.txt /data
# 更新一下 pip
RUN pip3 install --upgrade pip
# 用 pip 安装需要的 packages
RUN pip install -r /data/requirements.txt -i https://mirrors.cloud.tencent.com/pypi/simple
# 指定工作目录为 /data/code  方便运行代码
WORKDIR /data/code
docker build -t paper296816:v1 .

docker run -it paper296816:v1 sh run.sh

docker save -o paper296816.tar.gz paper291213:v1

docker load -i paper296816.tar.gz

rz paper296816.tar.gz
sz paper296816.tar.gz
rm -rf /var/log/httpd             # 删除文件夹实例
rm data.zip                       # 删除文件实例

docker images                     # 查看所有 Docker 容器
docker ps -a                      # 查看所有 Docker 容器

docker rm -f $(docker ps -aq)     # 删除所有 Docker 容器
docker rmi $(docker images -q)    # 删除所有 Docker 镜像

VMware17 + CentOS Linux + Xshell 更轻量和易用,我个人觉得更好。


三、总结

其实吧,专业的事儿交给专业的人来做,快速解决实际问题,节约时间,也是极好的。后来发现某鱼上有代配置 Docker 的同学,也就几十块,都能搞定和跟他交流。

数据竞赛复现代码 Docker 镜像制作总结如下:

  • 安装配置好 Docker,如果你有 Linux 内核的服务器,直接在上面用 Linux 配置好即可。如果你也跟我一样不想租服务器,就在本地 Windows 系统的笔记本安装,可以选择用 Docker Desktop 或者 VMware17 + CentOS Linux + Xshell 的方式。
  • 要通过 Dockerfile 构建 Docker 镜像,首先用 vim Dockerfile 创建该文件,根据要求写 Dockerfile 里的内容。
  • 然后用 docker build -t paper296816:v1 . 构建 Docker 镜像。
  • docker run -it paper296816:v1 sh run.sh 。通过运行该命令可以检验代码是否有问题(其中 run.sh 是自己封装的入口脚本,放在镜像的工作目录下)。
  • docker save -o paper296816.tar.gz paper296816:v1。构建并验证完成后可以通过该命令进行镜像打包。
  • docker load -i paper296816.tar.gz。打包完,还可以通过加载镜像包来进行加载验证。

成堆的镜像非常占用空间,如果需要删除所有镜像,则可以采取如下命令,先停止容器再删除镜像,如果是 Windows 系统则需要 powershell 或 XShell 中运行以下命令:

docker container stop $(docker container ls -aq)
docker rmi -f $(docker images -q)

📚️ 参考链接:

  • 老肥码码码 | 竞赛 Docker 提交指南
  • Windows 上的 Docker 部署以及 Conda 环境配置
  • Win10 安装 Ubuntu20.04 LTS 子系统
  • 史上最全(全平台)docker 安装方法!
  • Docker 快速入门 | 简介和安装
  • 旧版 WSL 的手动安装步骤
  • 将 Python 项目打包成 Docker 镜像
  • dockerfile 来构建自己的 docker 镜像
  • Docker 制作 Ubuntu 的 Python 环境镜像
  • 创建 Python 项目镜像,Windows Desktop Docker
  • Docker 复现代码记录
  • Docker 最全教程 —— 从理论到实战 (一)
  • 动力节点 Docker 教程
  • 从零开始:Python 程序制作 Docker 镜像并运行容器
  • 【Docker】Win10 上修改 docker 的镜像文件存储位置(九)
  • Docker 极简实战之 Python 项目安装部署
  • Windows 上如何关闭 Docker Desktop
  • Docker 清理
  • docker python3.8 镜像
  • 利用 docker 构建 Python3 镜像
  • Windows下使用 Docker 容器的踩坑记录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/697888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python初学-记录与Java基本语法不同的地方

这里写目录标题 条件与循环If条件语句for循环while循环 数学复数随机数 序列字符串列表与元组一些方法: 字典 条件与循环 If条件语句 在python里基础结构为if,elif,else,并且执行语句是在冒号后面的,Java是if&#x…

(小程序)基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板

(小程序)基于uniappvite4vue3搭建跨端项目|uni-appuview-plus模板 版本信息: HBuilderX: 3.8.4 Vite: 4.2.1 uView-Plus: 3.1.31一、创建uniappvue3项目: 点击编辑器的文件 > 新建 > 项目(快捷键CtrlN) 2.选择uni-app项目&…

一点基础、但一直没分清的概念2023/06/28

文章目录 1.export和export default的区别2.npm和cnpm的区别3.npm run dev/serve的区别4.slice、splice和split的区别 1.export和export default的区别 模块功能主要由两个命令构成:export和import。export命令用于规定模块的对外接口,import命令用于输…

【Windows】Windows 如何查看已连接过WiFi的密码

文章目录 方式一、使用命令行查看方式二、使用PowerShell 查看方式三、使用网络适配查看 方式一、使用命令行查看 CtrlShiftEsc 打开任务管理器 打开新建任务对话框 在任务管理器界面,找到第一个菜单文件(F)点击运行新任务(N)。 新建cmd任务 打开(O):cmd     …

SpringBoot+VUE实现文件导入并将其保存到Liunx系统

SpringBootVUE实现文件导入 一、需求二、前端代码实现2.1 显示实现2.1.1 a标签实现2.1.1.1 上传标签实现2.1.1.2 查看标签实现 2.2 上传文件和文件查看界面实现2.2.1 上传文件界面2.2.1.1 上传文件界面展示部分2.2.1.1 上传文件界面逻辑部分 2.2.2 查看文件界面2.2.2.1 查看文件…

一步一步学OAK之二: RGB相机控制

今天我们来实现 RGB相机的控制程序,用来控制彩色相机的曝光、灵敏度、白平衡、亮度/色度降噪、 设备端裁剪、相机触发器等。 目录 Setup 1: 创建文件Setup 2: 安装依赖Setup 3: 导入需要的包Setup 4: 全局变量Setup 5: 定义clamp函数Setup 6: 创建pipelineSetup 7:…

Nginx重写跳转

目录 一、rewrite跳转场景 二、rewrite跳转实现 三、rewrite实际场景 四、rewrite正则表达式 五、rewrite命令语法格式 六、location分类 1、location 大致可以分为三类 2、正则匹配的常用表达式 七、location 优先级 八、rewrite和location比较 九、总结 一、rewri…

9 HAL库驱动框架简述(STM32HAL库)

目录 HAL库驱动框架简述 HAL库外设设计思想 HAL库和Cube MX相结合 一、对外设的封装——句柄结构体 二、外设初始化 初始化结构体 初始化的逻辑 三、外设使用逻辑 通用接口函数 初始化函数 I/O操作函数 控制函数 状态参数 扩展接口函数 总结 补充:H…

如何以最小成本通过CMMI评估?评估调查问卷收集中

CMMI评估,我们经常遇到:评估费用高、时间长,CMMI标准过程无法高效落地,那么我们如何以最小的成本通过CMMI评估? CoCode开发云公益直播课即将开播!直播主题:如何以最小成本通过CMMI评估。为了更好…

怎么把文字生成图片?三款ai绘画生成器分享

如果你对ai绘画工具有一定了解的话,你就会知道:市面上大部分ai绘画工具都是收费。再退一步讲,我们暂且不论收费价格的高低,大多数收费的ai绘画工具也不一定能准确匹配我们的需求。 仅仅在学生党和工作党之间,对ai绘画…

python爬虫增加多线程获取数据

Python爬虫应用领域广泛,并且在数据爬取领域处于霸主位置,并且拥有很多性能好的框架,像Scrapy、Request、BeautifuSoap、urlib等框架可以实现爬行自如的功能,只要有能爬取的数据,Python爬虫均可实现。数据信息采集离不…

windows10教育版过期,记录一下重装windows11专业工作站。报错“若要在此计算机上安装windows,请重新启动安装”

准确的来说是重装 windows10或者windows11都有问题,而且卡了很久;最初的问题是 第一步解决问题的方法: 1、修改注册文件: 有些不显示鼠标,记住鼠标按住拖动,这样可以看见矩形的样子,可以知道大…

shardingsphere-proxy 搭建mysql的分库分表

1、docker安装mysql5.7版本 拉取mysql的镜像 docker pull mysql:5.7创建mysql的配置目录,日志目录,数据存储的目录 mkdir -p /home/sunyuhua/docker/mysql/conf mkdir -p /home/sunyuhua/docker/mysql/logs mkdir -p /home/sunyuhua/docker/mysql/dat…

服务器日志处理,文件截取关键字

临近年中述职,需要各种量化参数,服务稳定性是上半年的重中之重,所以需要重点列出说服性指标,因此各种错误吗的统计信息便是重要信息,因为公司的日志采集系统因上云缘故,导致历史数据丢失没法查询&#xff0…

Jetpack Compose实现 验证码输入框

highlight: androidstudio Jetpack Compose 作为 Android 的新一代 UI 开发框架,提供了非常强大的工具来构建用户界面。 今天,我们就利用 Compose 来实现一个炫酷的验证码输入框! 开始的思路是用6个TextField来实现 // 用于存储验证码的长度 val codeLength 6 // 定义一个…

Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型

Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型 VScode(Visual Studio Code) 安装模型必要插件VScode 预览自定义关节(articulations)动作VScode 导入 GLB 格式模型VScode 导出 GLB 格式模型 模型渲染作为 …

【什么是iMessage苹果推】怎样来获取设备令牌(Device Token)实现步骤

要获取设备令牌(Device Token),您需要在应用程序中实现以下步骤: 在应用程序中请求用户授权:您需要请求用户授权允许应用程序发送远程通知。这可以通过使用 UNUserNotificationCenter(User Notifications …

Linux学习之以openresty为例学习源码安装软件

https://github.com/openresty/openresty/tags里边有openresty各个版本的源码。 https://openresty.org/en/是官网。 wget https://github.com/openresty/openresty/archive/refs/tags/v1.15.8.1.tar.gz(github网址)或者wget https://openresty.org/download/openresty-1.15.…

6月29日第壹简报,星期四,农历五月十二

6月29日第壹简报,星期四,农历五月十二,早安!坚持阅读,静待花开1. 中国移动元宇宙产业联盟成立,科大讯飞、华为、小米等为首批成员。2. 离岸人民币兑美元跌破7.25关口,创去年11月末来低位。3. 成…

STC89C52与LCD1602液晶显示的软硬件仿真

STC89C52与LCD1602液晶显示的软硬件仿真 硬件仿真平台&#xff1a;protues8.13 软件仿真平台&#xff1a;keil5 硬件连接图&#xff1a; 软件代码实现&#xff1a; &#xff08;复制后 粘贴到keil5中&#xff0c;即可使用&#xff0c;无需修改&#xff09; #include <RE…