将Web请求指向在Ubuntu中运行的Docker容器

时间:2017-11-03 18:39:41

标签: ubuntu docker proxy dns

说我的mywebsite.com指向我的Ubuntu服务器。

我的Ubuntu服务器上运行了一个docker容器。

是否可以将请求发送到我的Ubuntu服务器到docker容器公开的应用程序?

我不完全确定要搜索这个问题的内容。我想我必须将nginx设置为代理或什么?

我知道可能有更好的服务器设置,我想知道这个特定的设置是否可行。

1 个答案:

答案 0 :(得分:1)

是的,有可能。你需要:

  • 正在侦听一个或多个端口的容器内部运行的应用程序或服务器
  • 使用正确的命令启动Docker容器,以确保容器正在侦听的端口已发布并绑定到主机上的端口
  • 确保正确配置了所有防火墙规则
  • 确保没有其他内容在主机端口上侦听(您的docker命令会出现错误,其中"地址使用"错误)

例如,您可以使用Apache。

使用简单的Dockerfile:

FROM httpd:2.4
RUN echo "<h1>It works!</h1>" > /usr/local/apache2/htdocs/index.html

命令:

# Builds my Dockerfile above and tags the image as "test"
docker build . -t test
# Creates a container with the default command running, which 
# starts Apache. Publishes (-p) port 80 inside the container and
# binds it to port 80 on the host machine
docker run --rm -p 80:80 test

如果您在本地运行此功能(请参阅上面的所有警告),您可以访问http://localhost并查看上面的消息。关键是-p标志,它发布端口80.

https://docs.docker.com/engine/reference/commandline/run/

nginx有很多用途。您可以使用nginx作为应用程序来监听渲染/提供静态页面。您还可以使用nginx作为客户端计算机(Web浏览器等)与另一个正在运行的进程(在另一个容器或另一个服务器中)之间的代理。如果您提供了有关您实际尝试完成的内容的其他详细信息,我可能会指出您正确的方向。