Docker安装tensorflow
介绍如何使用 docker 安装 tensorflow 及 Jupyter,文中环境使用的是 Windows 下虚拟机里的 Ubuntu 20.04 系统。
本文环境:
- 操作系统:Windows 10 21H1
- 虚拟机:Virtual Box 6.1.30 r148432
- Linux 发行版:Ubuntu Focal 20.04 (LTS)
- Linux 内核:5.4.0-90-generic
- Docker:20.10.11, build dea9396
搭建 Linux 环境可参考:
Tensorflow 资料:
官方文档:https://tensorflow.google.cn/install/docker?hl=zh-cn
docker 镜像地址:https://hub.docker.com/r/tensorflow/tensorflow/
注:虚拟机不能使用物理显卡,所以不支持 GPU 版的 TensorFlow,这里使用 CPU 版。如果在物理机直接使用 Docker 安装,并且有独立显卡,推荐安装 GPU 版。
拉取镜像:
docker pull tensorflow/tensorflow:2.7.0-jupyter
-jupyter,包含 Jupyter 及 TensorFlow 教程笔记。- 此镜像基于 Ubuntu 20.04.3 LTS,大小 1.15 G。
- 镜像中环境:Python 3.8.10,TensorFlow 2.7.0
在主机创建工作目录,用来绑定容器工作目录:
mkdir notebooks
注:向主机公开在容器中创建的文件时,可能会出现权限问题。通常情况下,最好修改主机系统上的文件。
测试运行:
docker run -it --rm tensorflow/tensorflow:2.7.0-jupyter \
python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
--rm:退出后会移除容器。
后台运行:
docker run -it -d -v ${PWD}/notebooks:/tf/notebooks \
-p 8888:8888 -u $(id -u):$(id -g) tensorflow/tensorflow:2.7.0-jupyter
-d:后台运行。-v:绑定刚才创建的 notebooks 目录到容器内的 /tf/notebooks。-u:容器内使用当前用户权限。
查看启动日志:
# 查看容器 ID(第一列)
$ docker ps | grep tensorflow
# 2430e99893ca tensorflow/tensorflow:2.7.0-jupyter "bash -c 'source /et…" About a minute ago Up About a minute 0.0.0.0:8888->8888/tcp goofy_chaum
# 根据 ID 查看容器日志
$ docker logs 2430
# ...
# or http://127.0.0.1:8888/?token=f740e368d819e9061ee414c258f9e4f810d17491f33b2288
其中,http://127.0.0.1:8888/?token=... 是访问 Jupyter 的链接。
如果是虚拟机,127.0.0.1 要更换为虚拟机 IP 地址。
成功启动后,就可以从浏览器访问 Jupyter。
测试代码:
在 Jupyter 中,进入 notebooks 目录,点击 “New” 新建一个 Python3 文件,输入如下代码,点击 “运行” 即可看到计算结果:
import tensorflow as tf
A = tf.constant([[1, 2], [3, 4]])
B = tf.constant([[5, 6], [7, 8]])
C = tf.matmul(A, B)
print(C)

容器编排
创建 .env
UID=1000
GID=1000
设置 UID:GID 是为了限制容器内的执行权限,如果需要在容器内使用 root 权限,如安装应用,可删除此设置,使用默认的 root 权限使用容器。
创建容器使用的工作目录:
notebooks:存放 notebook 文件。.jupyter:保存 jupyter 配置信息。
创建 docker-compose.yml
version: "3.1"
services:
tensorflow:
image: tensorflow/tensorflow:2.7.0-jupyter
container_name: tensorflow270
restart: always
user: "${UID}:${GID}"
volumes:
- "${PWD}/notebooks:/tf/notebooks"
- "${PWD}/.jupyter:/.jupyter"
- "/etc/timezone:/etc/timezone:ro"
- "/etc/localtime:/etc/localtime:ro"
ports:
- "8888:8888"
注:可自行添加其它需要的目录到容器中,如数据集所在的文件夹。
检查模板文件:
docker compose config
启动容器:
docker compose up -d
-d:后台启动。
查看状态:
docker compose ps
关闭并删除容器:
docker compose down
–End–
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)