我有一个运行 node.js 应用程序的 docker 容器。从容器正在运行的系统中,我可以执行以下操作...
curl http://<IP address of my docker container>/users ....
...他们是预期的 json 响应。现在我已经在我的系统上安装了一个 apache Web 服务器,我有一些 angular.js,我正在尝试与 docker 容器上的 REST API 进行通信。但是,当然,我的网络上的其他主机无法访问 docker 容器。有没有一种简单的方法来设置某种代理?我对 HAProxy 有点熟悉。我可以以某种方式设置 HAProxy 吗?
更新:
我像这样启动我的 docker 容器:
[red@vm-red ~]$ sudo docker run -p 3000:8080 -t -i redsimage
...
从主机 vm-red 上的命令行,我可以执行这个 curl ...
[red@vm-red ~]$ curl -H "Content-Type: application/json" http://172.17.0.6:3000/user
...并获得预期的结果。但是,如果我使用笔记本电脑上的“邮递员”或笔记本电脑上的浏览器将它们指向http://vm-red:8080/user
我什么都得不到。我究竟做错了什么?
您可以轻松地将 docker 容器中的端口映射到主机端口。例如,假设您的主机 ip 是
10.20.30.40
,您可以通过将 api 的端口映射到80
主机的端口来使 docker 机器中的 api 在该 ip 中可用。现在,如果您已经在主机中托管了某些东西,那么您可以将其映射到其他端口,例如8080
.通过将 docker images 端口映射到
80
主机上的端口,您的 api 将可在 访问10.20.30.40/user
,但如果您将其映射到不同的端口8080
,如10.20.30.40:8080/users
这可以使用下面的简单命令来完成:
你可以在这里阅读更多关于它的信息。