簡體   English   中英

如何在沒有 root 權限的情況下在 Docker 容器中運行 TensorBoard?

[英]How to run TensorBoard in Docker container without root privileges?

我在 Docker 容器中運行 tensorflow-gpu。 目前,當我使用 root 權限訪問正在運行的 Docker 容器時,我只能運行和訪問 TensorBoard。 我想在不使用 root 權限的情況下完成此操作。 如何做到這一點?

這里有一些關於我在做什么以及結果如何的信息:

我正在使用以下命令使用 TensorFlow 提供的 docker 容器運行 tensorflow-gpu。

$ docker run \
-u $(id -u username):$(id -g username) \
-it --rm --runtime=nvidia \
-v $(realpath ~/data/workspace/notebooks):/tf/notebooks \
-v $(realpath ~/data/workspace/):/tf/workspace \
-v $(realpath ~/data/images/):/tf/images \
-p 8888:8888 -p 6007-6015:6007-6015 tensorflow/tensorflow:2.0.0a0-gpu-py3-jupyter

在啟動容器的命令行中,我為 TensorBoard 添加了額外的端口。

在執行以下操作時,我完成了運行 TensorBoard。

  1. 容器正在運行(使用上面的命令進行啟動)
    → 每次嘗試從正在運行的 Jupyter notebook 中運行和訪問 TensorBoard 都會失敗
  2. 我從 docker 主機 PC 運行以下命令:
    • $ docker ps獲取容器名稱
    • $ sudo docker exec -it <container name> bash
      → 我在有和沒有sudo情況下都試過了,沒有下面的命令將無法工作
    • tf-docker /tf > tensorboard --logdir <log directory> --port 6007
  3. 現在我可以在localhost:6007上訪問 TensorBoard

我是 Docker、TensorFlow 的新手,我是 Linux (Ubuntu) 的新手。 我想在不使用 root 權限的情況下完成我上面描述的內容。

  • 有沒有辦法做到這一點?
  • 最好/正確的方法是什么?
  • 您的最佳實踐建議是什么?

編輯 2019-06-24:我不知道為什么它首先沒有鍛煉,也許我使用了錯誤的端口。 這就是我迄今為止所完成的。

  • 我使用以下命令行啟動容器,將 TensorBoard 的端口更改為 6006
     $ docker run \\ -u $(id -u username):$(id -g username) \\ -it --rm --runtime=nvidia \\ -v $(realpath ~/data/workspace/notebooks):/tf/notebooks \\ -v $(realpath ~/data/workspace/):/tf/workspace \\ -v $(realpath ~/data/images/):/tf/images \\ -p 8888:8888 -p 6006:6006 tensorflow/tensorflow:2.0.0a0-gpu-py3- jupyter
  • 然后從命令行我在不使用 root 權限的情況下在 docker 容器內啟動一個 bash shell: $ docker exec -it <container name> bash
  • 之后,我啟動 TensorBoard 並使用 webbrowser 中輸出中的鏈接: tf-docker /tf > tensorboard --logdir <log directory> --port 6007
  • 除了之前的命令,我還可以從 Jupyter notebook 啟動 Tensorboard。
     %reload_ext tensorboard.notebook %tensorboard --logdir=<log directory> --port=6006

編輯 2019-10-09:自從將 TensorFlow 2.0.0 版本與 TensorBoard 2.0.0 一起使用以來,我必須啟動 TensorBoard 如下:

$ tensorboard --logdir=<log directory> --host 0.0.0.0 --port 6006

如果沒有明確添加主機選項,它就不起作用。

我遵循的步驟,我可以用張量板可視化結果:

  • 創建容器時,打開/映射張量板的外部端口:
 > nvidia-docker run -d --name tkra_tensorb --ipc=host -it -p 8513:8090 > -p 3014:6006 -v /data:/data tkra_tb
  • 在容器內,運行 tensorboard:
 > tensorboard --logdir /data/tkra/MyDatasets/resnet101/checkpoints/ > --host 0.0.0.0 --port 6006

在瀏覽器中打開 tensorboard: <server_address>:3014

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM