将本地文件复制到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)