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

文章目录

  • 一、前言
  • 二、主要内容
    • 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.appxWin10 子系统 Ubuntu 忘记密码解决方案
ubuntu config --default-user root
sudo passwd rootwsl -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.8conda 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.shdocker save -o paper296816.tar.gz paper291213:v1docker load -i paper296816.tar.gzrz 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.hqwc.cn/news/4068.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot基于keytool实现https的双向认证

一、环境准备 服务器信息如下: 操作系统说明server-one服务器1server-two服务器2 二、keytool命令解释 -genkey 表示要创建一个新的密钥。 -alias 表示 keystore 的别名。 -keyalg 表示使用的加密算法是 RSA ,一种非对称加密算法。 -keysize 表示密…

网络原理之传输层与网络层重点协议

目录 传输层重点协议 TCP协议 TCP协议段格式 TCP原理 确认应答机制(安全机制) 超时重传机制(安全机制) 连接管理机制(安全机制) 滑动窗口(效率机制) 流量控制(安…

MySQL-SQL全部锁详解(上)

​♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#x…

基于win10环境搭建图片服务器的两种方式

简述 这几天接到一种需求,需要在window环境搭建图片服务,去网上搜一下,最终想出两种方式一种是Nginx方式 ,一种是公司常用的iis服务方式,最终使用iis方式,这里简单记录一下。 Nginx nginx方式很简单&#…

【Linux】冯诺依曼体系结构 操作系统 进程概念

目录 一、冯诺依曼体系结构 二、操作系统 1、概念 2、设计OS的目的 三、进程 1、基本概念 2、描述进程-PCB 3、组织进程 4、查看进程和终止 5、通过系统调用获取进程标识符 6、通过系统调用创建进程-fork 7、进程状态 8、特殊进程 8.1 僵尸进程 8.2 孤儿进程 一、冯诺依曼体…

如何在 Spring Boot 中使用定时任务

如何在 Spring Boot 中使用定时任务 引言 在实际的项目中,我们经常需要编写定时任务来执行一些周期性的任务,比如定时备份数据库、定时发送邮件等。在 Spring Boot 中,我们可以使用 Spring 的 Task Execution 和 Scheduling 来实现定时任务…

vue2、vue3分别配置echarts多图表的同步缩放

文章目录 ⭐前言⭐使用dataZoom api实现echart的同步缩放💖 vue2实现echarts多图表同步缩放💖 vue3实现echarts多图表同步缩放 ⭐结束 ⭐前言 大家好!我是yma16,本文分享在vue2和vue3中配置echarts的多图表同步缩放 背景&#xf…

vscode关闭调试工具栏

问题描述 项目启动的时候老是蹦出这玩意 很碍眼 解决方案: 设置里搜索 选项改为hidden即可

The Company Requires Superficial StudyPHP 变量的使用 ③

作者 : SYFStrive 博客首页 : HomePage 📜: PHP MYSQL 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f44…

基于matlab使用形态操作对视频流中的对象进行计数(附源码)

一、前言 此示例演示如何使用形态操作对视频流中的对象进行计数 输入视频流包含订书钉的图像。在此示例中,您使用平顶形态操作来消除不均匀的照明,并使用打开形态操作来消除订书钉之间的间隙。然后,将图像转换为二进制,对每个帧…

【Spring Boot 】Spring Boot 统一功能处理

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 前言 1. Spring 拦截器 1.1 自定义拦截器 1…

卷积神经网络--猫狗系列之构建模型【ResNet50】

在上一期:卷积神经网络--猫狗系列之下载、导入数据集,如果测试成功就说明对数据的预处理工作已经完成,接下来就是构建模型阶段了: 据说建立一个神经网络模型比较简单,只要了解了各层的含义、不同层之间参数的传递等等&…