docker 安装 基于python3.6 的 tensorflow-gpu

dockerhub 上 如图,官方提供了很多tensorflow的镜像,可根据自己的驱动,cuda版本使用对应的镜像,具体使用方式参考tensorflow 官方docker安装文档 https://www.tensorflow.org/install/docker?hl=zh-cn

 但是这些镜像存在一些不足,例如镜像 的系统环境是ubuntu,python 版本是3.5等等,为了解决这些问题,自己手工制作了一个 python3.6 ,tensorflow-gpu ==1.12 的tensorflow 镜像

主要安装过程如下:

1. 查看显卡环境

# 查看 显卡型号
lspci | grep -i nvidia
# 查看显卡驱动
nvidia-smi
# 查看cuda 版本
nvcc -V
# 查看cudnn 的版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
2.dockerhub 上搜索cuda 镜像根据自己的cuda 版本,cudnn 版本,操作系统环境 选择 镜像 ,并pull到本地,本人使用了9.0-cudnn7-devel-centos7
docker pull nvidia/cuda:9.0-cudnn7-devel-centos7

3. 启动镜像,配置自己的环境

  • docker images 查看 镜像ID
  • 启动 docker 容器,命令如下: 
docker run --runtime=nvidia -it -v <服务器本地路径>:<docker容器路径> 镜像ID bash

其中  --runtime=nvidia 为nvidia_docker 执行的固定格式, -v 挂载 磁盘路径 ,防止docke人执行过程中文件丢失

4. docker 容器内配置环境

  1. 检查 容器内是否能够联网 ,不能联网 请设置代理
    # 检查网络
    curl www.baidu.com
    # 设置代理 代理地址自己配置
    export http_proxy="http://192.168.1.1:8080"
    export https_proxy="http://192.168.1.1::8080"

     

  2. 安装python3.6
    # 更新系统环境
    yum install epel-release
    yum install https://centos7.iuscommunity.org/ius-release.rpm
    # 安装 vim
    yum -y install vim*
    # 安装 python 3.6
    yum install python36u
    # 安装 pip 
    yum install python36u-pip
    # 添加软连接
    ln -s /bin/python3.6 /bin/python3
    ln -s /bin/pip3.6 /bin/pip3
    # 更新 pip 和 setuptools
    python3.6 -m pip install --no-cache-dir -U pip
    python3.6 -m pip install --no-cache-dir -U setuptools

     

  3. 安装tensorflow
    python3.6 -m pip install --no-cache-dir ipython requests numpy pandas quandl
    # 注意修改 tensorflow 的版本号
    python3.6 -m pip install --no-cache-dir tensorflow-gpu==1.12.0rc0

     

  4. 设定 python 系统默认版本 ,并修改 yum 的python 依赖
    更改 yum 的python依赖 共两个文件 /usr/bin/yum 和# /usr/libexec/urlgrabber-ext-down
    # vi /usr/bin/yum
    #!/usr/bin/python2
    
    # vi /usr/libexec/urlgrabber-ext-down
    #!/usr/bin/python2
    
    # 更新 yum
    yun update
    
    # 设定 python 默认版本
    rm -rf /bin/python && ln -s /bin/python3 /bin/python

     

  5. 安装环境校验
    1. 检查python 版本
    2. 检查 pip: pip -v
    3. 检查yum : yum info python
    4. 检查 tensorflow gpu 是否安装成功 ,官方提供的检验代码地址:https://www.tensorflow.org/guide/using_gpu
#coding:utf-8

import tensorflow as tf

print (tf.__version__)
# 单GPU 检测
with tf.device('/device:GPU:0'):
  a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
  b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
  c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))
# 多GPU 检测
c = []
for d in ['/device:GPU:2', '/device:GPU:3']:
  with tf.device(d):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3])
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2])
    c.append(tf.matmul(a, b))
with tf.device('/cpu:0'):
  sum = tf.add_n(c)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(sum))

6. 容器保存

另起一个终端,保存 修改后的容器保存成镜像

# 查看容器Id
docker ps

# 容器保存
docker commit <容器Id> <容器名称>

 

6 .其他

 

使用docker 开发 启动容器时,一定要注意命令参数的格式,记得挂载服务器地址

到此 docker 安装tensorflow 已经完全完成,上述所有命令如下:

yum install epel-release
# export http_proxy="http://192.168.1.1:8080"
# export https_proxy="http://192.168.1.1:8080"
yum install epel-release
yum -y install vim*
yum install https://centos7.iuscommunity.org/ius-release.rpm
yum install python36u
yum install python36u-pip
ython3.6 -m pip install --no-cache-dir -U pip
python3.6 -m pip install --no-cache-dir -U setuptools
python3.6 -m pip install --no-cache-dir ipython requests numpy pandas quandl
python3.6 -m pip install --no-cache-dir tensorflow-gpu==1.12.0rc0
vim /usr/bin/yum
vim /usr/libexec/urlgrabber-ext-down
ln -s /bin/python3.6 /bin/python3
rm -rf /bin/python && ln -s /bin/python3 /bin/python
yum update
pip -V
yum info python
vim gpu_test.py
python gpu_test.py

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个命令有几个错误: 1. `-p` 选项应该放在 `docker run` 命令的最后面,因为它用来映射端口。 2. `-v` 选项后面的挂载路径应该是这样的: `-v /opt/python3.6/demo/aMedicalBot_demo_quesoar:/app` 3. 在这个命令里面使用了一个多余的 `/bin/bash`,这个参数是在你想要在容器里面执行一个 shell 命令的时候用的, 但在这里似乎没有什么必要。 正确的命令应该是这样的: ``` docker run -itd --name aMedicalBot -p 5005:5005 -v /opt/python3.6/demo/aMedicalBot_demo_quesoar:/app python:3.8-buster ``` 如果你想要在容器里面执行命令你需要在run 后面加上你需要执行的命令,如下面这样: ``` docker run -itd --name aMedicalBot -p 5005:5005 -v /opt/python3.6/demo/aMedicalBot_demo_quesoar:/app python:3.8-buster /bin/bash ``` ### 回答2: 在这个命令中,有一个语法错误。正确的命令应该是使用-d参数后紧随镜像名称,并且使用--name参数后指定容器名称,然后才是其他的选项参数。 正确的docker命令是: ``` docker run -itd --name aMedicalBot -p 5005:5005 -v /opt/python3.6/demo/aMedicalBot_demo_quesoar:/app python:3.8-buster /bin/bash ``` 修正后的命令将会创建一个名为"aMedicalBot"的容器,使用"python:3.8-buster"镜像,并设置端口映射(将主机的5005端口映射到容器的5005端口),同时将主机路径"/opt/python3.6/demo/aMedicalBot_demo_quesoar"挂载到容器内的"/app"路径下。最后,容器将以交互模式运行并启动"/bin/bash"。 ### 回答3: 原始的docker run命令的语法存在一些错误。正确的命令应该是: docker run -itd --name aMedicalBot -p 5005:5005 -v /opt/python3.6/demo/aMedicalBot_demo_quesoar:/app python:3.8-buster /bin/bash 以下是对命令中的错误进行更正的解释: 1. -p 参数应该位于容器名称(aMedicalBot)和镜像名称(python:3.8-buster)之间。 2. -v 参数与容器名称(aMedicalBot)和镜像名称(python:3.8-buster)之间应该没有空格。 3. 镜像名称(python:3.8-buster)应该紧随 -v 参数之后。 4. 将 /bin/bash 移到镜像名称(python:3.8-buster)之后。 正确的命令将会将容器命名为aMedicalBot,并在主机的端口5005上将主机的/opt/python3.6/demo/aMedicalBot_demo_quesoar目录挂载到容器的/app目录中。容器将使用python:3.8-buster镜像,并在后台运行/bin/bash作为启动命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值