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 run --runtime=nvidia -it -v <服务器本地路径>: 镜像ID bash
其中 --runtime=nvidia 为nvidia_docker 执行的固定格式, -v 挂载 磁盘路径 ,防止docke人执行过程中文件丢失
4. docker 容器内配置环境
# 检查网络
curl www.baidu.com
# 设置代理 代理地址自己配置
export http_proxy="http://192.168.1.1:8080"
export https_proxy="http://192.168.1.1::8080"
# 更新系统环境
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
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
更改 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
#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