[Centos-Docker] Docker-gpu安装及docker中jupyter配置

写在前面

OS版本:centos7
Anaconda版本:3.5

一、Docker安装

安装教程链接:https://github.com/ufoym/deepo#GPU,执行如下图的Step1和Step2:

[Centos-Docker] Docker-gpu安装及docker中jupyter配置_第1张图片
Step1中的使用yum安装命令如下:
$ yum install docker
$ yum install nvidia-docker

注意: image类似操作系统镜像文件等,一个image可以对应多个容器(container)。

二、Docker使用

1、首先在需要使用的地方创建文件夹,比如,我自己创建的文件夹名称是docker,然后在docker下面创建两个子文件夹data和config(必须是data和config)。

2、使用下面的命令运行镜像

$ nvidia-docker run -it -p 8888:9999 --ipc=host -v /home/hdj/jupyter/docker/data:/data -v /home/hdj/jupyter/docker/config:/config ufoym/deepo bash

其中,-p 8888:9999的作用是将docker中的9999端口映射到服务器本地的8888端口。(这里的主要作用是,在之后会安装jupyter,给其指定端口号9999,但是jupyter的端口windows下不能直接访问,所以我们需要将其映射到服务器本地,这样在win下才可以访问)。/home/hdj/jupyter/docker/data:/data是服务器上刚创建的data目录地址,/home/hdj/jupyter/docker/config:/config是服务器上刚创建的config目录地址。ufoym/deepo是刚pull下来的镜像的名称。

3、拉取完毕之后,如果想要使用自己的容器(使用自己的容器,就相当于使用一个独立的系统,以后使用无论怎么更改都不会影响别人的容器,也不会影响docker外的系统),需要得到唯一的Docker Container ID,当安装完成后,可以在系统中使用sudo docker ps -a命令查看:

4、得到Container ID之后,使用下面命令进入Docker交互窗口:

$ sudo docker exec -it 9d9a30b563c9 /bin/bash

其中,9d9a30b563c9是Container ID。

注: 使用docker exec –it时提示:Error response from daemon: Container is not running。可以先尝试:
Step1:$ sudo docker start
Step2:$ sudo docker exec -it /bin/bash

三、Docker常用命令

进入交互窗口之后,就可以像在Docker容器外面使用软件一样。

注: 将需要运行的程序文件存储在data文件夹下。

1、以运行python程序LSTM训练模型为例,若想使用深度学习模型,则需要安装tensorFlow-gpu,如果使用sudo pip install tensorflow-gpu则会提醒tensorflow-gpu已经安装过,所以我们不需要再次安装。若后台运行程序,只需要进入程序所在路径执行nohup python ***.py >log.txt 2>&1 &即可。
2、若查看已经运行的python程序,使用命令:ps –ef | grep python
3、若查看GPU使用情况,使用命令:nvidia-smi
4、查看GPU情况,并定时刷新情况:nvidia-smi –l
5、将容器重命名:docker rename new_name,如docker rename 9d9a30b563c9 lina
6、删除镜像:docker rmi ,使用sudo docker images可以查看所有镜像。
7、删除容器:docker rm -f ,使用 docker ps –a可以查看所有容器。
8、启动容器:sudo docker start -ia
9、若查看docker,发现docker的目录进不去,可直接使用sudo ls -al /var/lib/docker/containers查看containers中的文件,若查看containers的下一级目录,也可以使用类似的方法(ls -al后面必须使用完整路径)。

四、Docker下安装jupyter

首先进入docker,这里直接安装anaconda,比较方便。

1、安装jupyter

Step1:下载anaconda安装包

# wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.1.0-Linux-x86_64.sh

Step2:安装anaconda

# bash Anaconda3-5.1.0-Linux-x86_64.sh

若提示安装位置,可以直接Enter,也可以指定目录,如下图所示:

[Centos-Docker] Docker-gpu安装及docker中jupyter配置_第2张图片

接着会提示是否希望将PATH写入/root/.bashrc,输入yes

之后,使用下列命令使.bashrc文件立即生效:

# source ~/.bashrc

我们可以使用conda -V查看anaconda版本。

Step3:安装jupyter

# conda install jupyter notebook    

若已经安装成功,则不需要再安装,会有提示。

使用jupyter notebook查看是否docker内部jupyter可以启动成功。

2、配置windows下远程访问jupyter

Step1:安装和使用ipython

# conda install ipython 
# ipython 进入python shell交互

若进入成功,则说明ipython可正常使用。使用exit退出。

Step2:生成jupyter配置文件

# jupyter notebook --generate-config

输出Writing default config to: /root/.jupyter/jupyter_notebook_config.py即表示生成成功。注意: 这一步是在docker内,不是在ipython内。

Step3:使用ipython生成密码

# ipython //进入ipython交互模式
In [1]: from notebook.auth import passwd
In [1]: from notebook.auth import passwd

输入密码,会输出Out[2]: 'sha1:2a058da6fe75:fb78a12fbd27443b268f3b890fac016b74a38135',这串字符串会在配置文件中用到。

Step4:修改默认配置文件

# vi ~/.jupyter/jupyter_notebook_config.py    # 打开配置文件

添加如下内容:

c.NotebookApp.ip='*'     #设置所有ip都可以访问,即不限制ip
c.NotebookApp.password = u'sha1:2a058da6fe75:fb78a12fbd27443b268f3b890fac016b74a38135'     # sha1:2a058da6fe75:fb78a12fbd27443b268f3b890fac016b74a38135便是上面生成的一串哈希值
c.NotebookApp.open_browser = False     # 禁止自动打开浏览器
c.NotebookApp.port = 9999    # 指定一个端口,这里端口指定9999,因为我们在运行docker已经将docker的9999地址映射到了服务器本地的8888端口

Step4:启动jupyter

使用下列命令启动jupyter:

# jupyter notebook --allow-root

Step5:远程访问jupyter

访问地址:http://server_ip:8888,按照提示输入密码(刚ipython中输入的密码),登录就可以使用了。

五、docker目录迁移到其他磁盘

若docker的默认地址cent-root已满,需要将docker目录迁移到其他磁盘,则可使用以下操作(来自:docker 目录移动到其他磁盘的操作):

1. systemctl stop docker  #停止docker
2. mkdir /storage/docker-lib  #在我这个项目里storage是普通硬盘,在storage下创建一个目录
3. mv /var/lib/docker /storage/docker-lib  #将var下的docker移动到/storage下
4. ln -s  /storage/docker-lib/docker /var/lib/docker  #创建软连接,将storage这个路径存到/var目录下
5. #这时候检查一下/var/lib/docker目录是否已经软连接到/storage/docker-lib  
   ll /var/lib  #查看对应软连接是否创建成功
   ll /var/lib/docker
6. systemctl start docker   #启动docker

参考文章:
[1] docker安装anaconda数据分析
[2] Docker - Container is not running
[3] deepo

你可能感兴趣的:(软件问题)