Docker 带有闪亮应用程序的容器在本地主机上侦听

Docker container with shiny app listening on localhost

我正在使用 linux 服务器,我想 运行 一个 docker 容器与我闪亮的应用程序,但它不工作。为了检查问题,我在 RStudio 中安装了 运行 我闪亮的应用程序,代码如下:

shiny::runApp('/srv/shiny-server/my_app/app', host="0.0.0.0", port=4096)

然后,我可以在浏览器上看到我的应用 运行ning,RStudio 控制台中的输出如下:

...
Listening on http://0.0.0.0:4096

然后,我在 Ubuntu 终端上有一个 运行 一个 docker 容器和我的应用程序,我得到了相同的输出:

sudo docker run --rm -p 4096:3838 my_app

Listening on http://0.0.0.0:4096

但是如果我在浏览器上导航到这个地址,我将无法访问我的应用程序。

如果我在 Ubuntu 终端上写入以下内容,我会得到:

curl localhost:4096

curl: (7) Failed to connect to localhost port 4096

如果有人能帮我解决这个问题,我将不胜感激。

docker run 命令的 -p xxxx:yyyy 参数将内部容器端口 (yyyy) 映射到主机上的端口 (xxxx)。

您的应用侦听端口 4096,这是内部端口。您似乎想访问 localhost:4096 上的应用程序,因此主机端口也应为 4096。

尝试

sudo docker run --rm -p 4096:4096 my_app