将本地文件复制到docker容器中并执行
前情提要:在搭建docker容器时,需要把所需要的包全部安装上,但为了保证是否安装完全,可以将本地的项目文件复制到docker容器中运行,及时将缺的包安装上。
在上一篇创建docker容器并发布远程服务器平台第二节安装好一些所需的常用包之后,退出容器,开始复制本地文件
一、复制本地文件到docker容器
1.查看正在使用的容器的ID
命令:docker ps -a
2.将本地文件先上传xftp(建立与当前创建容器的服务器的连接),然后复制到docker容器
命令:docker cp 【在xftp中的路径】【容器ID】:【要复制到容器的路径】
例子:docker cp /home/ubuntu/rpg_e2depth-master 47dbcce9fce4:/workspace
二、 在容器中运行代码
1.启动容器
命令:docker start 【容器ID】
2.进入容器
命令:docker exec -it 【容器名称】 bash
ls命令显示目标路径中的全部文件
cd 【文件夹】跳转到该文件夹,再ls查看文件是否都复制成功
3.在项目文件中运行训练代码
命令:python 【训练文件】
报错ImportError表示包没有安装(正好对应我们此篇文章的目的,检查包是否安装完全)
4.安装缺的包(这里导入cv2出错)
命令:pip install opencv-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple
5.重复3.4. 直到不再报导入包的错为止
6.删除本地文件
cd ..(有空格):返回上一级目录,退出本地文件
删除命令:rm -rf 【文件名】
7.退出容器
三、镜像发布
到这里,我们的所需的包就都安装完成啦,就可以打包镜像了!
1.修改镜像名称
不修改名称在发布镜像的时候一直报错找不到镜像Error response from daemon: No such image: pytorch_ddhm
nvidia-docker commit pytorch_ddhm ddhm_pytorch
2.将镜像保存成tar文件
nvidia-docker save ddhm_pytorch -o ddhm_pytorch.tar
3.修改文件权限
chmod 777 ddhm_pytorch.tar
4.在xftp中发布镜像
双击ddhm_pytorch.tar传输到本地,即xftp左侧所打开的位置
报错总结
1.在查看容器ID时报错 bash: docker: command not found,是因为已经在docker容器里面,不能使用docker命令,需要先退出容器
2.在复制文件的时候报错copying between containers is not supported,是因为没有先把本地文件上传到xftp(一、2)
3. 进入容器时报错 Error response from daemon: Container 47dbcce9fce446992211ec967d2422b68916d29feedd6013655a4375c17f336f is not running,先start启动容器(二、1)
4.使用docker exec -it进入容器时报错,需要在容器名称后面加一个bash(二、2)
5.在xftp中传输镜像时,状态显示失败,是因为没有修改权限(三、3)