Docker 映射端口并暴露给特定主机

Docker mapping ports and expose to specific hosts

我在本地 运行 Docker。我正在测试 Jenkins 和 GitLab 的一些功能,所以我 运行:

对于詹金斯:

docker run -d \
--add-host="gitlab.example.com:172.16.2.92" \
-p 8080:8080 -p 50000:50000 \
--name jenkins \
--restart always \
-v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

对于 GitLab:

docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 23:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

我在公开端口和访问容器方面没有任何问题。

我的问题

两个容器都在本地运行,我的 IP 是 192.168.x.x 并将 GitLab 的主机添加到我的主机文件中,所以当我尝试访问 GitLab 时,没问题。我在浏览器中输入 gitlab.example.com 和 Vuola,GitLab 的主页。我尝试对 Jenkins 将主机添加到 docker.

做同样的事情
docker run -d \
--hostname jenkins.example.com \
--add-host="gitlab.example.com:172.16.2.92" \
-p 8080:8080 -p 50000:50000 \
--name jenkins \
--restart always \
-v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

但我不知道如何将 URL 添加到我的主机文件中。我试图添加 192.168.x.x:8080 和 jenkins.example.com 但没有。如果我在浏览器中输入 jenkins.example.com 没有任何反应。

我发现我可以使用 nginx 来做到这一点 绑定 但我不清楚。

谁能帮我解决这个问题?

谢谢!!

您目前面临的问题是: 查看这篇文章:Port numbers are not a valid part in hosts file.

现在要解决这个问题,您可以为同一个 IP 定义两个不同的主机名,然后使用 Apache HTTP 代理服务器并定义不同的路由将您的请求转发到不同的目的地。

参考 httpd : Apache httpd