我正在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。
$ docker ps
获取容器名称$ sudo docker exec -it <container name> bash
sudo
的情况下都尝试过,没有下面的命令将不起作用tf-docker /tf > tensorboard --logdir <log directory> --port 6007
localhost:6007
上访问TensorBoard 我是Docker,TensorFlow的新手,并且是Linux(Ubuntu)的新手。 我想在不使用root特权的情况下完成上述操作。
编辑2019-06-24: 我不知道为什么一开始没有锻炼,也许我使用了错误的端口。这是我到目前为止所完成的。
$ 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
$ docker exec -it <container name> bash
tf-docker /tf > tensorboard --logdir <log directory> --port 6007
%reload_ext tensorboard.notebook
%tensorboard --logdir=<log directory> --port=6006
答案 0 :(得分:0)
我遵循的步骤,我可以用张量板将结果可视化:
> nvidia-docker run -d --name tkra_tensorb --ipc=host -it -p 8513:8090
> -p 3014:6006 -v /data:/data tkra_tb
> tensorboard --logdir /data/tkra/MyDatasets/resnet101/checkpoints/
> --host 0.0.0.0 --port 6006
在浏览器中打开张量板: