为什么端口转发与我的 Docker 实例不一致?

Why doesn't port forwarding work consistently with my Docker instance?

我从笔记本电脑上通过 ssh 连接到服务器。我在我的笔记本电脑上打开了一个端口来接受来自端口 9090 的传入流量,并将其转发到 9191。

在服务器上,我创建了一个 Docker 球:sudo docker run --network host --runtime=nvidia -it --rm tensorflow/tensorflow:latest-gpu /bin/bash

接下来,在 shell(在 Docker 中),我这样做了:jupyter notebook --ip=0.0.0.0 --port=9090 --allow-root

瞧!我将浏览器指向 http://localhost:9191,我可以看到珍贵的 'lil 笔记本 运行。

我退出Docker球,退出ssh进程,回家睡觉。

今天,我醒来并通过 ssh 返回到服务器。我在笔记本电脑上打开了与前一天相同的端口。

我通过 sudo docker start my_image 在昨天的 Docker 图片中访问了 shell 然后 sudo docker exec -it my_image /bin/bash

但是现在,当我进入 shell(在 Docker 中)并输入 jupyter notebook --ip=0.0.0.0 --port=9090 --allow-root 时,就像我昨天所做的那样,我的转发不再有效。为什么?

所以,如果有人偶然发现这个问题,为了解决这个问题,我最终重新开始。

第 1 步:ssh
第 2 步:以这种方式创建 Docker: sudo docker run -p 9090:9090 --runtime=nvidia -it --rm tensorflow/tensorflow:latest-gpu /bin/bash

关键是 -p 9090:9090 部分。我不知道 --network host 在做什么或没做什么,但摆脱它是关键。