将包含服务器的不同容器放在同一台服务器中
Put different containers containing a server in the same server
我有一个装有 apache2 的 Debian 服务器。我可以通过IP地址访问它。
我想要的是能够通过像 "myIpAddress/container1" 这样的 url 从外部访问其中的容器(其中包含一个 apache2 服务器)。我目前拥有的是只能从 Debian 服务器访问这些容器。
我考虑过使用反向代理,但我无法实现。
感谢您的帮助! :-)
将 docker 容器的端口映射到主机端口并从 <host-ip>:port
.
访问 docker 容器
docker run -p host-port:container-port image
例如,在 运行 上使用上述命令的容器将使容器在 127.0.0.1
可用
docker run -p 80:5000 training/webapp
更新:
使用 NGINX 设置反向代理
此示例使用普通 NGINX 容器作为站点 A,使用普通 Apache 服务器作为站点 B。
运行反向代理。
docker run -d \
--name nginx-proxy \
-p 80:80 \
-v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
启动站点 A 的容器,在 VIRTUAL_HOST 变量中指定域名。
docker run -d --name site-a -e VIRTUAL_HOST=a.example.com nginx
在 http://a.example.com 查看您的网站。
站点 A 仍然 运行,启动站点 B 的容器。
docker run -d --name site-b -e VIRTUAL_HOST=b.example.com httpd
在 http://b.example.com 查看站点 B。
注意:确保您已设置 DNS 以将子域转发到主机 运行 nginx-proxy。如果您使用 AWS,最简单的方法是使用 Route53。
为了在本地进行测试,通过在 /etc/hosts 文件中添加条目将子域映射到本地主机。
127.0.0.1 a.example.com
127.0.0.1 b.example.com
参考资料
我有一个装有 apache2 的 Debian 服务器。我可以通过IP地址访问它。
我想要的是能够通过像 "myIpAddress/container1" 这样的 url 从外部访问其中的容器(其中包含一个 apache2 服务器)。我目前拥有的是只能从 Debian 服务器访问这些容器。
我考虑过使用反向代理,但我无法实现。
感谢您的帮助! :-)
将 docker 容器的端口映射到主机端口并从 <host-ip>:port
.
docker run -p host-port:container-port image
例如,在 运行 上使用上述命令的容器将使容器在 127.0.0.1
可用 docker run -p 80:5000 training/webapp
更新:
使用 NGINX 设置反向代理
此示例使用普通 NGINX 容器作为站点 A,使用普通 Apache 服务器作为站点 B。
运行反向代理。
docker run -d \ --name nginx-proxy \ -p 80:80 \ -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
启动站点 A 的容器,在 VIRTUAL_HOST 变量中指定域名。
docker run -d --name site-a -e VIRTUAL_HOST=a.example.com nginx
在 http://a.example.com 查看您的网站。
站点 A 仍然 运行,启动站点 B 的容器。
docker run -d --name site-b -e VIRTUAL_HOST=b.example.com httpd
在 http://b.example.com 查看站点 B。
注意:确保您已设置 DNS 以将子域转发到主机 运行 nginx-proxy。如果您使用 AWS,最简单的方法是使用 Route53。
为了在本地进行测试,通过在 /etc/hosts 文件中添加条目将子域映射到本地主机。
127.0.0.1 a.example.com
127.0.0.1 b.example.com
参考资料