写在前面
OS版本:centos7.5
Anaconda版本:3.5
一、Docker安装
安装教程链接:https://github.com/ufoym/deepo#GPU,执行如下图的Step1和Step2:
Step1中的使用yum安装命令如下:
$ yum install docker
$ yum install nvidia-docker
二、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 757d542c43e5 /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
,如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,也可以指定目录,如下图所示:
接着会提示是否希望将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