本文环境:

  • 操作系统: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–

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐