docker中安装anaconda+ jupyter(远程访问)+tensorflow

一、docker安装anaconda

1、到anaconda清华镜像网站下载:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

注意版本:Anaconda2表示python2,Anaconda3表示python3。查看:https://blog.csdn.net/yuejisuo1948/article/details/81043823

2、如下载的是Anaconda3-5.3.0-Linux-x86_64.sh,则安装的命令是 sh Anaconda3-5.3.0-Linux-x86_64.sh

3、更新环境变量

# source ~/.bashrc

# conda -V

4、安装相关包:conda install 包名

如安装jupyter notebook,详细看一; conda install jupyter notebook

启动:jupyter notebook

5、创建tensorflow环境:

  • conda create -n tf1.13.1-py3.6 python=3.6
    激活环境:source activate tf1.4-py3.6
     
    查看conda有哪些环境:conda info -e
     

二、安装jupyter

进入docker交互式环境:docker exec -it ***** bash

安装jupyter:

  • 安装python dev包 :  apt-get install python-dev
  • 安装jupyter :  pip install jupyter [若pip没安装好,需要安装sudo apt install python3-pip]

配置文件:

  • 生成jupyter配置文件:jupyter notebook --generate-config
  • 使用ipython生成密码 

In [1]: from notebook.auth import passwd

In [2]: passwd()

Enter password:

Verify password:

Out[2]: 'sha1:******'

  • 到配置文件/root/.jupyter/jupyter_notebook_config.py中修改以下参数

c.NotebookApp.ip='*'                          #绑定所有地址,即所有IP 地址都可以访问
c.NotebookApp.password = u'sha1:******'
c.NotebookApp.open_browser = False            #启动后是否在浏览器中自动打开
c.NotebookApp.port =8100                      #指定一个访问端口8100,默认8888

c.NotebookApp.allow_remote = True     #将远程访问设置成True

启动:

jupyter notebook --allow-root

本机访问:

  • 查看docker IP,需安装  apt install net-tools ,然后输入命令ifconfig -a。

找到inet后的IP地址即为docker地址。如:inet  153.16.0.1

    • 远程访问:http://153.16.0.1:8100即可。8100为配置文件时修改的启动端口,若有密码,即token=  后面输入密码。/

 远程访问:

在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。

1、若没有启动容器时,即docker run -it ***,则可以通过以下命令指定容器8888端口映射成主机端口8000。-p 后面接主机端口:容器端口,-d表示后台执行,-it是进入交互式。

  docker run -d -it -p 8000:8888 tensorlow_gpu:latest /bin/bash

  【然后通过docker ps可以查看映射成功】

2、若容器已经执行了,即docker ps -a是存在的容器可以通过以下两种方式:本人只成功了第一种:

(1)

    • 提交一个运行中的容器为镜像,先查询该容器的ID *****,通过docker ps -a查询,以下tensorflow1_13_1是自己取的新容器名字。
docker commit ****(containerid) tensorflow1_13_1
    • 运行镜像并添加端口
docker run -d -it -p 8000:8888 tensorflow1_13_1 /bin/bash
    • 进入docker 中,docker exec -it *****(新容器ID,docker ps -a查询) bash
    • 启动jupyter notebook,jupyter notebook --allow-root,默认端口8888
    • 远程访问jupyter,浏览器中输入网址:主机IP+映射端口8000,即http://11.161.112.1:8000

(2)试得不成功,没理解inspect ,过后再补

http://www.yinxi.net/doc/show.php?DocID=10732

1、获得容器IP

将container_name 换成实际环境中的容器名

docker inspect `container_name` | grep IPAddress

2、 iptable转发端口

将容器的8000端口映射到docker主机的8001端口

复制代码 代码如下:
iptables -t nat -A  DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000

三、安装tensorflow

1、安装cuda和cudnn

CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。
链接:https://www.jianshu.com/p/622f47f94784
只要把cuDNN文件复制到CUDA的对应文件夹里就可以,即是所谓插入式设计,把cuDNN数据库添加CUDA里,cuDNN是CUDA的扩展计算库,不会对CUDA造成其他影响。

(1)注意显卡型号:

输入命令lshw -c video,查看显卡型号driver version。找到对应的cuda版本下载。

看到以下这些结果表明支持nvidia以及显卡类型为GP102 [TITAN Xp]

product: GP102 [TITAN Xp]

vendor: NVIDIA Corporation

(2)安装显卡驱动

NVDIA driver search page搜索你的显卡需要的驱动型号并下载(如图)。

或者输入命令查询可用 驱动版本:ubuntu-drivers devices

要想安装440:sudo apt install nvidia-440

测试安装成功:输入nvidia-smi命令测试是否有结果

(3)安装cuda

如果训练中用到了 tensorflow,应该确认一下 cuda 版本与 tensorflow 版本的兼容性问题

https://tensorflow.google.cn/install/source#linux

确定安装cuda10.0+cudnn7.4+tensorflow1.13.1

cuda下载地址:https://developer.nvidia.com/cuda-toolkit-archive

 根据命令安装cuda

(4)安装cudnn

https://developer.nvidia.com/rdp/cudnn-archive

下载对应版本的tgz文件,然后解压 tar xfz

 (5)安装tensorflow1.13.1

原文地址:https://www.cnblogs.com/Lee-yl/p/12163947.html