Docker 教程-HZAU特供版
Docker是一个一键搭载代码运行环境的东西,相当于一个小型的系统,系统里面仅包含你的程序所需的运行环境,其他的什么东西都没有。
在服务器中跑代码一般使用Docker,因为一个服务器中可能有两个以上的人在跑代码,他们的环境是互相冲突的,此时使用docker可以让他们的环境互不影响。而且docker有守护进程,可以解决长时间不操作跑代码的程序可能会被杀掉的问题。
我们的服务器已经装好docker和显卡驱动了,下面告诉大家如何配置自己的docker并在服务器中跑起来。
配置docker
去dockerhub:https://hub.docker.com/ 找你需要的运行环境,以tensorflow gpu为例子
搜索tensorflow
找到第一个官方镜像点进去
点击tags
如果想用tensorflow 2 gpu的话 在tags中搜索2.0.1-gpu-py3
在最右边有一个命令,复制下来在服务器上运行就好
由于网络原因可能一次下载不全,这个时候运行几次听天由命吧,愿意折腾的话也可以换docker源,换源网上有教程,一搜就是这里就不赘述了。
注意tf版本一定要和服务器的cuda版本像对应,我们服务器的cuda版本是cuda10.几
由于代码运行环境可能不止tensorflow,可能还有matplotlib或者scipy之类的库,这时候就要自己动手配置一下了
在服务器中,使用如下命令查看已安装的docker:docker image ls
找到自己安装的那个docker 此处以tensorflow 1.13.2-gpu-py3举例
运行如下命令启动docker 实例: docker run -it tensorflow/tensorflow:1.13.2-gpu-py3 /bin/bash
此时会出现如下图像
现在就相当于进入了一个小系统,在这里你可以自己安装所需要的环境
安装好环境后,要将此环境保存下来,这时候需要另起一个窗口,此窗口不要关闭
如下
此时在新窗口中使用:docker commit 664a88267646 my_docker
这样就把刚刚改好的664a88267646 永久保存为my_docker 了
然后保存好的镜像应该可以用命令:docker image ls 看到
最后 保留一个好习惯,不用的docker实例及时杀掉,在之前的那个窗口里面 输入:exit
退出docker 实例
这里说一下镜像和实例的区别
镜像用docker image ls就可以看到
实例用docker ps可以看到
在我们运行docker run -it tensorflow/tensorflow:1.13.2-gpu-py3 /bin/bash 命令后 就会根据镜像tensorflow/tensorflow:1.13.2-gpu-py3创建一个实例
一个镜像可以创建多个实例
镜像相当于c++中的类, 实例就相当于类的实例。
现在讲如何使用docker
现将项目文件上传至服务器
然后输入如下命令: docker run --runtime=nvidia -p 5000:5000 -it --ipc=host -v 你的项目文件夹路径:映射到docker中的路径 要用的镜像名称/bin/bash
如下:docker run --runtime=nvidia -it --ipc=host -v /home/cwuser3/feature_selection/12345/:/workspace zxb_tf_matplt /bin/bash
这样 在目录中就可以看到workspace文件夹 这里面就是你的项目文件夹,在这里面跑代码即可
代码跑起来之后直接点击浏览器的×即可。
现在跑了一天的代码,想看结果的时候
登录服务器 运行docker ps 命令 找到自己正在跑的docker 的 id
然后使用:docker attach 你的id就可以看到你代码的运行情况了
在跑完代码后 保持一个好习惯 使用exit退出你的docker
有时候忘了退也没关系,使用 docker kill 你的container id 也能退出docker。 但如果你错杀了师兄师姐的docker ,明天请自挂东南枝
有极小的概率,在关掉网页后你的python进程会被杀掉,
可以使用nvidia-smi看显卡占用情况就知道自己的程序是否被杀掉了
这时候使用docker attach 进入容器重新跑一遍就成。