背景:由于本人只有一台windows,天池上的比赛需要提交镜像,自己试了好多方法给windows安装linux,但是始终没安装成功。最终采用在利用VirtualBox安装linux虚拟机,使用MobaXterm进行ssh登陆linux,镜像的制作、push、提交。此文章是回忆着写的,细节还需多查找资料。
1.VirtualBox软件安装
下载VirtualBox安装包,进行安装。VirtualBox的安装直接按照默认按照即可。
2.linux系统安装
linux系统的按照需要下载镜像iso文件,本人选择按照ubuntu-24-04,在官网下载安装包。linux的安装按照默认的流程走就行,建议采用默认的配置进行安装(因为本人试过修改配置,安装完成后docker用不了的情况)。可以在安装过程中选择将docker安装了,后续就不需安装。安装完成后重启运行即可。
3.ssh远程登录VirtualBox虚拟机
ssh远程登录VirtualBox虚拟机的原因是VirtualBox的复制粘贴对主机和虚拟机不友好,需要进行一些列设置,但是本人没有设置成功,因此选择ssh进行远程登陆,利用IDE进行各种操作。VirtualBox配置ssh登陆的操作参考ssh远程登录VirtualBox虚拟机的帖子。远程配置完成会然后==选择远程终端登录软件,远程登陆软件有很多,如xshell、putty、MobaXterm。==个人选择MobaXterm。如下图,localhost的ip为127.0.0.1,账号和密码是linux的账号。
4.先说一下docker和linux的一些问题
问题1:docker安装完成执行命令报错。permission denied while trying to connect to the Docker daemon socket at uni
docker安装完成后运行docker ps 或者dockers images,会报如上错误,需要给docker ps加上sudo权限,即:sudo docker ps
问题2:docker采用build编译时候报错。ERROR: failed to solve: failed to register layer: write /usr/local/lib/python3.9/site-packages/torch/lib/libtorch_cpu.so: no space left on device
首先想到是virtualbox的磁盘太小,需要设置大,但是设置大编译镜像还是报磁盘空间不足。需要采用virtualbox更改硬盘大小帖子刷新内存。执行如下命令:
#进入Linux系统切换到root 然后执行下面的代码lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
resize2fs /dev/ubuntu-vg/ubuntu-lv
问题3:由于linux系统是安装在虚拟机上,多次编译docker会产生多余的缓存文件,影响使用,因此需要采用docker system prune -a 不定期的释放内存。参考帖子Docker踩坑记录
5.天池镜像制作
镜像的制作流程参考:零基础入门Docker-cuda练习场。该帖子已经描述的很清楚了。因此只列了一个流程:
1.根据比赛要求制作镜像,例如根据提供的demo,添加自己的代码文件
# 不定期释放缓存 docker system prune -a
2.镜像仓库登陆,登陆命令在零基础入门Docker-cuda练习场都有体现
docker login 仓库地址--username xxxx --password xxxx
3.在官方给的demo底下添加自己的代码
4.# 镜像编译
bash build.sh
5.运行镜像,保证镜像正常运行,可使用命令:docker run your_image 验证。
6.# 利用docker images 查找到镜像id进行打标签
docker tag 9fe3c4174410 registry.cn-shanghai.aliyuncs.com/xxxxxxx:0.7-wuzhi
7.# 上传
docker push registry.cn-shanghai.aliyuncs.com/xxxxxxx:0.7-wuzhi
6.镜像提交
镜像的提交按照零基础入门Docker-cuda练习场的指导进行。