【问题标题】:Docker mapping ports and expose to specific hostsDocker 映射端口并暴露给特定主机
【发布时间】:2018-04-13 12:35:55
【问题描述】:

我在本地运行 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 的主机添加到我的 hosts 文件中,所以当我尝试访问 GitLab 时,没有问题。我在浏览器中输入 gitlab.example.com,然后输入 GitLab 的主页 vuola。我尝试对 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 来做到这一点绑定,但我不清楚。

谁能帮我解决这个问题?

谢谢!!

【问题讨论】:

    标签: docker nginx jenkins gitlab nginx-reverse-proxy


    【解决方案1】:

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

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

    参考 httpd : Apache httpd

    【讨论】:

    • 很好的答案!谢谢!!现在我将尝试解决我的问题。
    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 2017-10-12
    • 2014-09-22
    • 2021-08-05
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    相关资源
    最近更新 更多