docker - 如何为 Docker 中的容器分配域名?

这些天我正在阅读很多关于如何设置和运行 docker 堆栈的信息。但我总是错过的一件事是如何设置特定容器通过其域名响应访问,而不仅仅是使用 docker dns 的容器名称。

我的意思是,我有一个可以从外部访问的微服务,例如:users.mycompany.com,它将通过处理用户 api 的微服务容器

然后,当我尝试访问 customer-list.mycompany.com 时,它将进入处理客户列表的微服务容器

当然,使用 docker dns 我可以访问它们并将它们链接到 docker 网络,但这仅适用于想要访问容器到容器,而不是互联网到容器。

有人知道我应该怎么做吗?或者设置它的最佳方式。

最佳答案

因此,您需要使用端口发布的概念,以便容器中的端口可以通过主机的端口访问。使用它,您可以从 Nginx 设置一个简单的 proxy_pass,将 users.mycompany.com 重定向到 myhost:1337(假设您将端口发布到 1337)

所以,如果你想这样做,你需要设置你的容器来暴露一个特定的端口:

docker run -d -p 5000:5000 training/webapp # publish image port 5000 to host port 5000

然后您可以从您的主机 curl 您的 localhost:5000 访问容器。

curl -X GET localhost:5000

如果你想在前面设置一个域名,你需要一个网络服务器实例,允许你proxy_pass你的主机名到你的容器。

即在 Nginx 中:

server {
  listen 80;
  server_name users.mycompany.com;
  location / {
    proxy_pass http://localhost:5000;
  }
}

我建议你关注 this tutorial ,也许检查docker run reference .

https://stackoverflow.com/questions/40867727/

相关文章:

docker - 什么是容器 list ?

docker - 如何将 Capistrano 与 Docker 集成进行部署?

docker - Docker 容器中的 asp.net 核心与 Azure App 服务

python - 如何使用 pip 安装本地软件包作为 docker 构建的一部分?

docker - 在 docker 中标记图像

docker - 多个 Docker 容器可以使用相同的主机/端口运行吗?

docker - 如何将 Docker 容器中的目录挂载到主机?

docker - 扩展本地 Dockerfile

docker - Jenkins + Docker : How to control docker

ruby-on-rails - 无法运行 rake db :create in Dockerfile