amazon-web-services - 使用 nginx 向位于云中的 docker 容器发出 http 请求

标签 amazon-web-services docker dns cloud oracle-call-interface

我是 docker 的新手。我有这个 docker 容器在端口 80 上运行并生活在一个云实例中。 Docker 默认为其容器分配一个私有(private) IP 地址。我想知道要采取哪些必要措施才能访问我的云环境之外正在运行的 docker 容器(类似于 http://mydockercontain.org )。我曾尝试使用 nginx 在云环境中重新创建反向代理服务器,但对于云环境之外的人来说,向正在运行的 docker 容器发出 http 请求是不够的。我知道我必须设置某种 DNS 记录映射到 docker ip 地址,但我对这项技术真的很陌生,不知道解决这个问题的正确方法是什么。

最佳答案

大约 2-3 个月前,我站在你的立场上,在某些时候这一切都说得通,所以请耐心等待。
我最喜欢做的事情是通过 SSH 进入并运行一些东西来获取容器 ID,然后查看哪些容器确实在运行,例如:

sudo docker ps -a
接下来,运行它以进入该容器的日志,这样您至少可以直观地看到那里发生了什么:
sudo docker logs -f [CONTAINERID]
所以现在你至少可以看到一些关于给定容器内部发生的事情。使用 docker ps -a 命令,您可以查看它正在运行的端口,并尝试将该端口添加到您尝试访问的 IP 地址上。 IE。 xxx.xx.xx.xx:8000 或类似的东西。
还是达不到?
在这一点上我不能......所以从这里我回到了第 1 格。在我的 Dockerfile 中,我发现在我想要构建/运行容器时使用 EXPOSE 80 来公开该端口是最简单的。不确定您对 DockerFile 的熟练程度,但它只是一行:
EXPOSE 80
您可能需要做的最后一个更改是控制应用程序的运行位置。我是一个大 python ,所以如果它像 flask 那么你可以通过在你的app.run()中轻松更改它。将主机设置为 0.0.0.0 像 app.run(host=0.0.0.0)。否则,您的应用程序将在 127.0.0.1 上运行,这意味着您的应用程序只能从容器内部访问,如果您刚开始使用 Docker,这很难掌握。
一旦你准备好了,回去再运行一些命令......只要确保你从 docker ps -a 命令中获得了这些容器 ID。
如果它只是一个 docker 容器:
sudo docker kill [CONTAINERID] # kill the old container
sudo docker rm [CONTAINERID] # remove the old container
sudo docker build [same build thing as before]
sudo docker run -d -p 80:80 [CONTAINER ID FROM BUILD ABOVE]
通过使用 搬运工运行 -d -p 80:80 ,您实际上是将它绑定(bind)到主机上可用的 TCP/IP 端口,通常我可以通过 访问它。主机 IP 地址为 通过将其作为 url 输入。当然,您可能想要设置一个 VPC 或其他限制对您提供的给定计算机白名单的访问的东西……我不完全是您所使用的云平台,但我建议您调查一下。
接下来,根据您所在的云环境,创建一个负载均衡器,可以在这些机器上运行的容器前面充当反向代理。只要这些容器都在负载均衡器可以到达它们的地方运行,那部分就相对即插即用 - 所以您可能需要创建一个允许该通信的迷你网络/vpc。老实说,我在那个领域没有足够的经验来真正给你很多可靠的指导。
我希望这至少可以帮助您指出正确的方向。只要继续尝试新事物和实验,你就会解决它 - 相信我,我知道你在哪里,最终你会达到一切突然变得完美的地步。

关于amazon-web-services - 使用 nginx 向位于云中的 docker 容器发出 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62765559/

相关文章:

dns - 如何在更新注册商记录之前测试新的域名服务器?

git - 有没有办法在 Windows 上的 Jenkins 中通过 SSH 使用 AWS KMS 进行 key 管理?

amazon-web-services - 属性 SubnetIds 的值必须是字符串列表类型错误

amazon-web-services - S3 到 EC2 传输太慢

docker - 将主机上运行的进程检测到Docker容器中

azure - Azure 为记录提供的 IP 地址出现 404 错误

amazon-web-services - 如何根据资源标签授予对所有AWS资源的访问权限?

docker - 优化 Docker 中的 cargo 构建时间

命名卷的 docker-compose.yml 语法

Spring Controller 重定向到错误的 URL