如何与docker同时运行Tensorboard和jupyter?

Jac*_*Liu 6 docker jupyter tensorflow tensorboard

我开始学习如何使用TensorFlow进行机器学习.并且发现docker非常方便将TensorFlow部署到我的机器上.但是,我找到的示例不适用于我的目标设置.这是

在ubuntu16.04操作系统下,使用nvidia-docker一起托管jupyter和tensorboard服务(可以是两个容器或一个容器有两个服务).从jupyter创建的文件应该对主机操作系统可见.

  • Ubuntu 16.04
  • Dokcer
  • NVIDIA-泊坞窗
    • Jupyter
    • Tensorboard

Jupyter容器

nvidia-docker run \
    --name jupyter \
    -d \
    -v $(pwd)/notebooks:/root/notebooks \
    -v $(pwd)/logs:/root/logs \
    -e "PASSWORD=*****" \
    -p 8888:8888 \
    tensorflow/tensorflow:latest-gpu 
Run Code Online (Sandbox Code Playgroud)

Tensorboard容器

nvidia-docker run \
    --name tensorboard \
    -d \
    -v $(pwd)/logs:/root/logs \
    -p 6006:6006 \
    tensorflow/tensorflow:latest-gpu \
    tensorboard --logdir /root/logs
Run Code Online (Sandbox Code Playgroud)

我试图将logs文件夹挂载到两个容器,让Tensorboard访问jupyter的结果.但是山似乎确实有效.当我在带有notebooks文件夹的jupyter容器中创建新文件时,主机文件夹$(pwd)/ notebooks什么都没有出现.

我还按照Nvidia Docker,Jupyter Notebook和Tensorflow GPU中的说明进行操作

nvidia-docker run -d -e PASSWORD='winrar' -p 8888:8888 -p 6006:6006 gcr.io/tensorflow/tensorflow:latest-gpu-py3
Run Code Online (Sandbox Code Playgroud)

只有Jupyter工作,张量板无法从6006端口到达.

小智 6

我今天面临同样的问题.

简短的回答:我将假设您正在为Jupyter Notebook和tensorboard 使用相同的容器.因此,正如您所写,您可以使用以下内容部署容器:

nvidia-docker run -d --name tensor -e PASSWORD='winrar'\
                  -p 8888:8888 -p 6006:6006 gcr.io/tensorflow/tensorflow:latest-gpu-py3
Run Code Online (Sandbox Code Playgroud)

现在您可以访问8888和6006端口,但首先需要初始化tensorboard:

docker exec -it tensor bash
tensorboard --logdir /root/logs
Run Code Online (Sandbox Code Playgroud)

关于另一个选项:在不同的容器中运行jupyter和tensorboard.如果您在不同容器中安装相同目录时遇到问题(过去有一个错误),因为Docker 1.9可以创建独立的卷,取消链接到特定容器.这可能是一个解决方案.

  1. 创建两个卷来存储日志和笔记本.
  2. 使用这些卷部署两个映像.

docker volume create --name notebooks
docker volume create --name logs 
Run Code Online (Sandbox Code Playgroud)

nvidia-docker run \
--name jupyter \
-d \
-v notebooks:/root/notebooks \
-v logs:/root/logs \
-e "PASSWORD=*****" \
-p 8888:8888 \
tensorflow/tensorflow:latest-gpu
Run Code Online (Sandbox Code Playgroud)

 nvidia-docker run \
 --name tensorboard \
 -d \
 -v logs:/root/logs \
 -p 6006:6006 \
 tensorflow/tensorflow:latest-gpu \
 tensorboard --logdir /root/logs
Run Code Online (Sandbox Code Playgroud)