Docker映射端口并向特定主机公开

时间:2018-04-13 00:18:02

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

我在本地运行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时,没问题。我在浏览器和guLab的主页vuola中键入gitlab.example.com。我尝试使用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添加到我的hosts文件中。我试图添加192.168.x.x:8080和jenkins.example.com,但没有。如果我在浏览器中输入jenkins.example.com,则不会发生任何事情。

我发现我可以使用nginx来执行绑定,但对我来说并不清楚。

任何人都可以帮我解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

参考httpd:Apache httpd