使用docker安装tensorflow

1. 环境

最开始是实验性质,所以就安装在工作电脑的 Ubuntu16.04LTS 操作系统的虚拟机上。无nvida显卡,所以也不需要GPU支持。
本文参考的是Tensorflow安装的官方指南

2. 安装docker

参考源:Docker官网
安装新版本 docker 需要移除旧版本的 docker ,官方推荐的命令是:

$ sudo apt-get remove docker docker-engine docker.io

我们可以选择从 apt 安装或者下载 deb 文件安装,这里还是从 apt 安装。
首先运行 sudo apt-get update 命令来更新库。
然后安装一些必要的工具:

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

接着添加 docker 官方的 GPG key:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

你可以打印以下看看是否是正确的值:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

然后就是加入 docker 的源到你的 apt 软件库中了:

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

好了,至此所有必要的准备都做好了,就可以安装 docker了,话说 docker 是分为两种不同的版本:CE 和 EE, EE是商业版本,这里我们选择CE。

这里先更新一下 apt 远程库:

sudo apt-get update

然后就可以安装 docker了:

sudo apt-get install docker-ce

如果你要安装特定版本的 docker, 也可以使用 $ sudo apt-get install docker-ce=<VERSION> 命令去安装。

3. 为 docker 设置代理 && 运行 hello world

由于这边是用的实验室的网,要访问外网需要走本地的一个 http 代理,所以需要给
docker 设置一个代理,当然,如果觉得由于某些不可描述的原因,访问官方 repository 不够顺滑,也可以用这种方法给 docker 设置一个代理。
大致方法就是在 /etc/systemd/system/docker.service.d/ 目录下建立一个内容为

[Service]
Environment="HTTP_PROXY=http://username:password@proxy.example.com:80/"

的名为 httpproxy.conf 的文件。
然后刷新一下 systemd 的设置:

$ sudo systemctl daemon-reload

再然后重启一下 docker 服务,或者重启一下系统:

$ sudo systemctl restart docker

代理就设置好了,这时候可以先运行一下计算机世界万能的 hello world 例程:

$ sudo groupadd docker
$ sudo usermod -aG docker $USER
$ sudo docker run hello-world

前面两个命令是新建一个名为 docker 的 unix group 并把当前用户加入其中,会看到系统会先 pull 一个 hello world 镜像下来,然后运行之。

4. 下载 tensorflow 镜像并运行

运行过 hello world, 运行 tensorflow 也就不那么难了。

$ docker run -it -p hostPort:containerPort TensorFlowCPUImage

其中 hostPort:containerPort 是可选的,代表 docker 监听的端口,这里可以不用,会选一个可用端口来做, TensorFlowCPUImage 是 tensorflow 的镜像地址,我们这里选 gcr.io/tensorflow/tensorflow
完整命令如下:

docker run -it gcr.io/tensorflow/tensorflow

然后就会看到 tensorflow 看起来像是一个后台进程一样运行起来了,并且占用了当前
shell 的标准输入输出。
啊,那如何用 tensorflow 的库呢,我们先运行一下

docker ps

会看到如下输出:

CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                NAMES
63e779a8b666        gcr.io/tensorflow/tensorflow   "/run_jupyter.sh --a…"   18 seconds ago      Up 16 seconds       6006/tcp, 8888/tcp   romantic_lamport

观察到它的名字是romantic_lamport, 于是用命令:

docker exec -it romantic_lamport bash

就可以进到 docker 的 shell 下,然后就可以用 python shell 或者 whatever 下用 tensorflow 的库愉快的玩耍啦~!
关闭也很简单:

docker stop romantic_lamport 
    原文作者:cunfate
    原文地址: https://www.jianshu.com/p/478750c45e68
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞