Linux中使用Docker快速搭建Tensorflow-Gpu开发环境

本文将介绍:

  • 如何找到所需要的Tensorflow-GPU镜像
  • 在Linux终端中拉取镜像、查看本地镜像
  • 使用Docker构建Tensorflow-Gpu环境
  • 配置jupyter外部访问映射
  • 检查是否是GPU环境

查看本文的前置条件是本地需要有Docker环境,如果还未配置Docker环境,可以先查看文章配置下。

一,下载Tensorflow镜像

1,找到所需要的Tensorflow镜像

百度搜索nvidia ngc进入NVIDIA GPU 加速容器,找到所需版本的Tensorflow镜像,并copy 其对应的 pull tag在这里插入图片描述

2,在Linux终端中拉取镜像
docker pull nvcr.io/nvidia/tensorflow:21.07-tf2-py3
3,查看镜像

(1), 输入docker info来查看文件下载的位置,并进入到该目录中:
在这里插入图片描述
(2), 下载镜像的储存地址:
在这里插入图片描述
(3), 名称的映射:
repositories.json的结果与docker images看到的images数目相同
在这里插入图片描述
新增镜像后,repositories.json中会增加两条相对应的image的ID记录,一条与image hub上的相同,另一条与本地docker images的相同。如下图所示:
在这里插入图片描述
详细的Docker image 存储路径的解析

二,使用Docker构建Tensorflow-Gpu环境

对于Docker容器的具体命令可以参考:
docker run 容器运行
Docker run 命令

1,使用Docker构建Tensorflow-Gpu环境
docker run --gpus all -d -it -p 【宿主机映射端口】:【容器内映射端口】 -v 【宿主机绝对地址】:【容器内绝对地址】 --name 【自定义容器名称】 -e 【全局变量key】=【全局变量value】 nvcr.io/nvidia/tensorflow:21.07-tf2-py3 bash

注意: 在定义映射端口时,需要先确定端口是否被占用! 可通过如下命令确认:

lsof -i:【端口号】
2,进入容器
docker exec -it 【自定义的容器名称】 bash
3,配置jupyter外部访问映射
  • 使用Docker构建Tensorflow-Gpu环境时将jupyter端口8888开放到宿主机外部端口(jupyter端口可以自己定义,但要和容器内部端口保持一致)
  • 修改jupyter_notebook_config.py文件,可以从环境变量中读取用户名,密码等。vim /root/.jupyter/jupyter_notebook_config.py
    修改内容可参考如下代码:
import os
from IPython.lib import passwd

c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.port = int(os.getenv('PORT', 8888))
c.NotebookApp.open_browser = False
c.MultiKernelManager.default_kernel_name = 'python3'

# sets a password if PASSWORD is set in the environment
if 'NOTEBOOK_PASS' in os.environ:
    c.NotebookApp.password = passwd(os.environ['NOTEBOOK_PASS'])
    del os.environ['NOTEBOOK_PASS']
else:
    c.NotebookApp.token = ''

if 'NOTEBOOK_USER' in os.environ:
    c.NotebookApp.notebook_dir = '/root/' + os.environ['NOTEBOOK_USER']
    del os.environ['NOTEBOOK_USER']

  • 后台开启jupyer服务:
nohup jupyter-notebook --allow-root  > /dev/null  2>&1 &
  • 此时可以使用浏览器直接访问了
http://【ip】:16666/lab

三,配置、检查环境

1,配置环境
apt-get update
apt-get install sudo
2,检查是否是GPU环境
ipython
import tensorflow as tf
print(tf.__version__)
print(tf.test.is_gpu_available())	# 结果True则是GPU环境

猜你喜欢

转载自blog.csdn.net/TFATS/article/details/119918502