要基于Docker安装tensorflow,当然首先要安装Docker了,下面先说安装Docker的步骤
1. 首先卸载电脑上可能存在的老的版本,如果没有安装过可以不执行
$ sudo yum remove docker \
docker-common \
docker-selinux \
docker-engine
2. 配置Docker仓库
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
下面两步可选:
$ sudo yum-config-manager --enable docker-ce-edge
$ sudo yum-config-manager --enable docker-ce-test
3. 安装Docker CE(Community Edition, Docker官网推荐安装这种)
$ sudo yum install docker-ce
如果你要安装指定版本的docker,可以用下面的命令
$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 17.09.ce-1.el7.centos docker-ce-stable
查找到之后,再安装对应的版本,我这里安装的默认的版本
4. 启动Docker
$ sudo systemctl start docker
5. 可以通过如下的命令来验证Docker是否启动成功
$ sudo docker run hello-world
好的,到了这里Docker就已经安装完成,官网地址:
https://docs.docker.com/engine/installation/linux/docker-ce/centos/#upgrade-docker-ce
接下来说下基于Docker来安装Tensorflow的步骤
Docker中文社区中说用如下命令来安装:
$ docker run -it b.gcr.io/tensorflow/tensorflow
但是执行后报错:
Unable to find image 'gcr.io/tensorflow/tensorflow:latest' locally
docker: Error response from daemon: Get https://gcr.io/v1/_ping: dial tcp 64.233.188.82:443: i/o timeout.
See 'docker run --help'.
但是网上说主要是国内的用户会报错,有的借助VPN可以解决,但是有的不行
解决办法就是更换镜像的pull镜像库,也就是说不是从Tensorflow给出的库进行pull,而是用Docker的库
因此执行如下命令:(注意这里在docker中装tensorflow镜像的时候,已经装了一个操作系统了,tensorflow是装在操作系统上的,一般都是在docker中装镜像,而装镜像一般都是自带操作系统的,软件是装在操作系统上的) 。失败了可以重试几次
$ sudo docker run -it -p 8888:8888 tensorflow/tensorflow
接下来会得到如下输出:
Unable to find image 'tensorflow/tensorflow:latest' locally
latest: Pulling from tensorflow/tensorflow
ae79f2514705: Pull complete
5ad56d5fc149: Pull complete
170e558760e8: Pull complete
395460e233f5: Pull complete
6f01dc62e444: Pull complete
abeb898c5fe7: Pull complete
d66940709c30: Pull complete
44835d776a0b: Pull complete
6ec5364eed97: Pull complete
3ff1cc6e638b: Pull complete
56aa69af61b9: Pull complete
982e3b05055e: Pull complete
Digest: sha256:22ffc051ea06ee478045e8ff1bcaa13522c79be64feba8ed60204372a5d10708
Status: Downloaded newer image for tensorflow/tensorflow:latest
[I 02:10:35.653 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[W 02:10:35.688 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 02:10:35.697 NotebookApp] Serving notebooks from local directory: /notebooks
[I 02:10:35.697 NotebookApp] 0 active kernels
[I 02:10:35.697 NotebookApp] The Jupyter Notebook is running at:
[I 02:10:35.697 NotebookApp] http://[all ip addresses on your system]:8888/?token=3da8b01693d986b54eb3a0b2d6e21bf1f15d386b0798696e
[I 02:10:35.697 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 02:10:35.698 NotebookApp]
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://localhost:8888/?token=3da8b01693d986b54eb3a0b2d6e21bf1f15d386b0798696e
因为这个镜像比较大,所以需要一定的时间来执行pull
打开一个新的命令终端进行测试看是否安装成功, 现在的这个终端不能关闭
首先看下docker中有哪些容器/镜像存在, 其实这里每个镜像都是包含一个操作系统的,“COMMAND ID” 可以理解成镜像的Id,其实也可以理解成操作系统的Id
$ sudo docker ps -a
得到的输出如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4e6872b2712a tensorflow/tensorflow "/run_jupyter.sh --a?? 5 minutes ago Up 5 minutes 6006/tcp, 0.0.0.0:8888->8888/tcp unruffled_lalande
可以看到我的Docker容器中只有一个tensorflow,其id为:4e6872b2712a
接着进入容器,替换我的这个id:4e6872b2712a为你的,其他的不变。
$ sudo docker exec -i -t 4e6872b2712a /bin/bash
得到的输出为:
[@tc_57_128 ~]# docker exec -i -t 4e6872b2712a /bin/bash
root@4e6872b2712a:/notebooks#
这里我们可以认为是进入到了Docker中Id为4e6872b2712a的操作系统中,而这个系统里面装了tensorflow,可以看到root@4e6872b271a的含义为:
root: 当前的账户
4e6872b2712a: 机器的标识,等价于机器的ip
我们可以来看下这个操作系统是Linux的哪个发行版:
root@4e6872b2712a:/notebooks/myCode# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
可以看到是ubuntu的
那么我们就可以使用apt-get命令来给这个操作系统安装所需要的软件, 比如可以安装vim:
$ apt-get update && apt-get install vim
注意: 这里安装的软件只在这个Docker的这个镜像中有效,其他的镜像中是无效的,因为不同的镜像属于不同的操作系统
这个镜像(操作系统)中也已经装了python
可以查看下python的版本
root@4e6872b2712a:/notebooks# python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
导入tensorflow看是否安装成功
>>> import tensorflow as tf
>>>
可以看到import后没有报错,所以tensorflow安装成功
那么以后使用tensorflow的话,就必须进入这个tenforflow镜像的操作系统中才能使用
最后备注下在mac os下安装docker的方法:
那么如何重启一个tensorflow容器呢?
首先看下有哪些容器
$docker ps -a
可以看到如下输出:
可以看到id为9598c088945a的tensorflow容器目前处于exit状态,就是还没有开始工作
启动这个容器
$docker restart 9598c088945a
然后进入这个docker容器
$docker exec -i -t 9598c088945a /bin/bash
接下来就可以愉快的使用tensorflow了