首页 > 解决方案 > UCP 和 HTTP 服务器在 Docker 上的共存

问题描述

我有一个在 IP 主机上运行的 Docker EE 172.10.100.17。我已经使用默认参数安装了 UCP,并且我还部署了 nginx 容器,主机端口 443 映射到容器上的 443。

docker run -it --rm --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp install --host-address 172.10.100.17 --interactive  
docker run -it -d --name ngx -p 80:80 -p 443:443 nginx
  1. UCP 和 Nginx 可以同时服务于两者 https://172.10.100.17吗?
  2. 当我的主要目标是让 nginx/apache 在主机 IP 上提供服务时,部署 UCP 的最佳做法是什么?
  3. 是否建议为 nginx 容器/服务设置静态 IP?

(注意:在 nginx 上启用了 https)

标签: dockernginxdocker-ucp

解决方案


关键在于处理端口映射的 -p 参数。列出的第一个端口在主机上,第二个在容器中。所以 -p 80:80 表示将主机上的 80 端口映射到容器中的 80 端口。

让我们将其扩展到 Nginx。我将假设您想将 HTTPS 与 UCP 和 Nginx 一起使用。主机上的每个端口只有一个应用程序可以侦听。因此,如果两个容器都暴露端口 443,您可以让一个使用主机上的端口 443 (-p 443:443),而另一个使用不同的端口 (-p 4443:443)。然后,您将分别在主机上的端口 443 和 4443 访问它们,即使两个容器都公开端口 443 - Docker 正在执行端口转发。

您可能会问如何使用 Nginx 作为反向代理在单个端口上运行两个容器。这也是一种可能性,尽管更复杂。


推荐阅读