提出问题
因为项目环境部署需要,需要在Win7环境下部署一个算法,而且是在无网情况下。因此,考虑使用docker来执行这次部署任务,然而也不是十分顺利,所以来简单记录一下配置流程。
参考链接:Windows 7 安装Docker实践
解决方案
-
因为担心docker版本较高不能在win7系统上运行,因此,我们安装了一个DockerToolbox-19.03.1版本。总体来说,win7版本的docker和win10不太一样,安装步骤可以按照上述参考链接 Windows 7 安装Docker实践 去安装。安装之后,桌面会出现以下三个图标。
一般地,Docker Quickstart Terminal是主要操作软件,Oracle VM VirtualBOX就是与win10安装docker极大的不同,会多出来一个虚拟机。Kitematic(Alpha)是管理镜像和联网docker hub下载镜像的软件,在无网情况下基本没有用。 -
上述步骤会存在一个boot2docker.iso过期或者下载失败的问题,这时候需要在该链接下boot2docker下载boot2docker,我们选择了v19.03.12版本。
-
以上步骤操作完成后,即可点击Docker Quickstart Terminal软件开启docker之旅。然而,现实是很残酷的,启动Docker Quickstart Terminal后会自动在Oracle VM VirtualBOX里面建立一个虚拟机default。这是一个大的雷。因为这个虚拟机分配的内存只有19GB左右,因此,我们在用docker load -i xxx.tar命令导入镜像时会报出“no space left on device”的错误。
-
参考该链接docker win7 no space left on device实现错误更正。其实主要是对default的空间放大。具体步骤,我是如下解决的。
(1)在Oracle VM VirtualBOX中删除自动构建的default虚拟机,并在Dockertoolbox的安装目录下删除default相关,我的路径是在C:\Users\Administrator.docker\machine\machines\default,然后利用“Win+R”键切换到cmd命令行,利用如下命令构建新的default虚拟环境。#构建100GB空间的default docker-machine create -d virtualbox --virtualbox-disk-size "100000" default #指定环境 docker-machine env default
(2)以上步骤完成后,再切换到Docker Quickstart Terminal界面,这时的default环境就变成100GB了,我们再用docker load -i xxx.tar命令即可导入镜像。
-
利用导入的docker镜像构建容器,发现存在两个问题,即--gpus all 这个参数不能应用,应该是win7的驱动不行,另外有个物理机与容器之间构建文件夹映射也不行,虽然命令可以通过,但在容器内对应的文件夹里找不到相应的物理机存放的文件。因此,我们只能通过以下两个命令实现物理机->容器和容器->物理机的文件传输。
#以下命令在物理机cmd里面操作 #docker cp 物理机目录文件 容器名称:容器目录 docker cp D:/XX.txt whurs:/home/whu #docker cp 容器名称:要复制的文件路径及名称 物理机路径 docker cp whurs:/home/whu D:/whu
-
因为之前我构建的镜像时带cuda的pytorch代码,在我们的无网win7中不能正常使用。我们查询torch版本、torchvision版本和torchaudio版本,在该链接python第三方库相关下下载对应的cpu版本替换即可。
文章评论