OS版本:centos7
Anaconda版本:3.5
安装教程链接:https://github.com/ufoym/deepo#GPU,执行如下图的Step1和Step2:
$ yum install docker
$ yum install nvidia-docker
注意: image类似操作系统镜像文件等,一个image可以对应多个容器(container)。
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
进入交互窗口之后,就可以像在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,这里直接安装anaconda,比较方便。
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可以启动成功。
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的默认地址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