Skip to content

Docker

Docker 使用容器创建了一个与外部系统隔离开的 TensorFlow 运行环境。TensorFlow 可运行在这个虚拟环境中并使用宿主机的资源(比如目录访问,使用 GPU,网络连接等等)。TensorFlow Docker 镜像 已在各个 release 版本上测试可用。

因为只需在宿主机上安装 NVIDIA® GPU 驱动NVIDIA® CUDA® Toolkit 不需安装),所以在 Linux 上使用 Docker 是启用 TensorFlow GPU 支持最简单的方法。

TensorFlow Docker 安装要求

  1. 在本地宿主机安装 Docker
  2. 在 Linux 环境下获取 GPU 支持,安装 nvidia-docker

注意:想要不使用 sudo 运行 docker 命令,需要创建 docker 用户组并将你的用户加入此用户组。详细步骤请查看 Linux 安装后配置

下载 TensorFlow Docker 镜像

官方 TensorFlow Docker 镜像位于 Docker Hub 中的 tensorflow/tensorflow。镜像中的使用以下格式 Tag 后发布。

Tag描述
latest最新发布的已编译 TensorFlow CPU 镜像。默认。
nightly最新构建 TensorFlow 镜像。(不稳定)
version特定版本的已编译 TensorFlow 镜像,例如:1.11
Tag后缀
tag-devel特定 tag 的发布版本和源码。
tag-gpu特定 tag 的带有 GPU 支持的发布版本。 (查看)
tag-py3特定 tag 的支持 Python 3 的发布版本。
tag-gpu-py3特定 tag 的带有 GPU-支持并支持 Python 3 的发布版本。
tag-devel-py3特定 tag 的支持 Python 3 的发布版本和源码。
tag-devel-gpu特定 tag 的带有 GPU-支持 的发布版本和源码。
tag-devel-gpu-py3特定 tag 的带有 GPU 支持并支持 Python 3 的发布版本以及源码。

For example, the following downloads TensorFlow release images to your machine: 例如,使用如下命令下载 TensorFlow 发布版本镜像到本地机器

docker pull tensorflow/tensorflow                    # 最新稳定发布版本
docker pull tensorflow/tensorflow:nightly-devel-gpu  # 最新开发版本 w/ GPU 支持

启动 TensorFlow Docker 容器

使用以下命令启动一个已配置的 TensorFlow 容器:

docker run [-it] [--rm] [-p hostPort:containerPort] tensorflow/tensorflow[:tag] [command]

详细内容,请查看 docker 启动参考

使用 Cpu-only 镜像的样例

我们使用 tag 为 latest 的镜像确认 TensorFlow 安装过程。Docker 在第一次运行的时候会下载一个新的 TensorFlow 镜像:

docker run -it --rm tensorflow/tensorflow \
    python -c "import tensorflow as tf; print(tf.__version__)"

成功:TensorFlow 现在已安装完成。查看教程开始你的学习之旅吧。

我们来看下更多 TensorFlow Docker 的用法。在 TensorFlow 已配置容器中启动一个 bash 命令行会话:

docker run -it tensorflow/tensorflow bash

在这个容器中,你可以启动一个 python 会话并导入 TensorFlow。 To run a TensorFlow program developed on the host machine within a container, mount the host directory and change the container's working directory 为了在容器中运行宿主机中开发的 TensorFlow 程序,需要将宿主机的主目录挂载到容器中并设定容器的工作路径 (-v hostDir:containerDir -w workDir):

docker run -it --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow python ./script.py

在容器中创建文件时会出现权限问题并会暴露给宿主机。所以最好在宿主机中进行文件操作。

启动一个由使用 Python 3 构建的最新版 TensorFlow 服务支持的 Jupyter Notebook

docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-py3

按照说明在浏览器中打开 URL:http://127.0.0.1:8888/?token=...

GPU 支持

因为只需在宿主机上安装 NVIDIA® GPU 驱动NVIDIA® CUDA® Toolkit 不需安装),所以在 Linux 上使用 Docker 是启用 TensorFlow GPU 支持最简单的方法。

安装 nvidia-docker获得支持 NVIDIA® GPU 支持的 Docker 容器。nvidia-docker 仅供 Linux 环境下使用,详细内容请查看平台支持 FAQ

查看 GPU 是否可用:

lspci | grep -i nvidia

确认 nvidia-docker 安装过程

docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

注意:nvidia-docker v1 使用别名 nvidia-docker,v2 则需使用 docker --runtime=nvidia

使用已启用 GPU 镜像的样例

下载并启动已启用 GPU 的 TensorFlow 镜像(可能需要花费几分钟):

docker run --runtime=nvidia -it --rm tensorflow/tensorflow:latest-gpu \
    python -c "import tensorflow as tf; print(tf.contrib.eager.num_gpus())"

配置已启用 GPU 的镜像可能会花费很长时间。如果需要重复运行基于 GPU 的脚本,你可以使用 docker exec 来重用容器。

使用最新的 TensorFlow GPU 镜像并在容器中运行一个 bash 命令行会话:

docker run --runtime=nvidia -it tensorflow/tensorflow:latest-gpu bash

成功:TensorFlow 现在已安装完成。查看教程开始你的学习之旅吧。

基于 MIT 许可发布 共建 共享 共管