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 进入容器重新跑一遍就成。

 

posted @ 2020-03-06 11:11  shensobaolibin  阅读(254)  评论(0编辑  收藏  举报