Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指向运行在Ubuntu中的Docker容器的Web请求_Ubuntu_Docker_Proxy_Dns - Fatal编程技术网

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

指向运行在Ubuntu中的Docker容器的Web请求,ubuntu,docker,proxy,dns,Ubuntu,Docker,Proxy,Dns,假设我让mywebsite.com指向我的Ubuntu服务器 我的Ubuntu服务器上运行着一个docker容器 是否可以将对我的Ubuntu服务器的请求定向到docker容器公开的应用程序 我不太确定该搜索什么来回答这个问题。我想我必须将nginx设置为代理或其他什么 我知道可能会有更好的服务器设置,我想知道这是否可能。是的,这是可能的。你需要: 在容器内运行的应用程序或服务器正在侦听一个或多个端口 使用正确的命令启动Docker容器,以确保容器侦听的端口已发布并绑定到主机上的端口 确保所有

假设我让mywebsite.com指向我的Ubuntu服务器

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

是否可以将对我的Ubuntu服务器的请求定向到docker容器公开的应用程序

我不太确定该搜索什么来回答这个问题。我想我必须将nginx设置为代理或其他什么


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

是的,这是可能的。你需要:

  • 在容器内运行的应用程序或服务器正在侦听一个或多个端口
  • 使用正确的命令启动Docker容器,以确保容器侦听的端口已发布并绑定到主机上的端口
  • 确保所有防火墙规则都已正确配置
  • 确保在主机端口上未侦听任何其他内容(docker命令将出现“address is use”错误)
例如,您可以使用Apache来实现这一点

使用简单的Dockerfile:

FROM httpd:2.4
RUN echo "<h1>It works!</h1>" > /usr/local/apache2/htdocs/index.html
如果您在本地运行此操作(请参阅上面的所有注意事项),您可以访问
http://localhost
并查看上面的消息。关键是
-p
标志,它发布端口80

nginx有多种用途。您可以使用nginx作为执行侦听呈现/服务静态页面的应用程序。您还可以使用nginx作为客户端计算机(web浏览器等)和另一个正在运行的进程(在另一个容器或另一个服务器中)之间的代理。如果你能提供更多关于你真正想要完成的事情的细节,我也许能为你指明正确的方向

# 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