我有两个本地码头集装箱: Jenkins和Bitbucket。我似乎无法从Bitbucket向Jenkins发出http请求。但是,我可以从Jenkins到Bitbucket提出请求。
集装箱的运行方式如下:
Bitbucket:
docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d --add-host host.docker.internal:host-gateway -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server Jenkins:
docker run --name=jenkins -d --add-host host.docker.internal:host-gateway -v jenkins_home:/var/jenkins_home -p 9080:8080 -p 50000:50000 jenkins/jenkins:latest为了简单和演示的目的,我将使用curl命令来举例说明这种行为。
从Jenkins向Bitbucket发出请求,将在对Bitbucket容器调用curl时得到预期的结果:
jenkins@c1f0ec99a73a:/$ curl -v host.docker.internal:7990
* Trying 172.17.0.1:7990...
* Connected to host.docker.internal (172.17.0.1) port 7990 (#0)如果情况正好相反,从Bitbucket到Jenkins,它就不会成功:
root@2a350f4d1ff4:/var/atlassian/application-data/bitbucket# curl -v host.docker.internal:8080
* Could not resolve host: host.docker.internal
* Closing connection 0
curl: (6) Could not resolve host: host.docker.internal问题:,我错过了什么配置才能从Bitbucket容器到Jenkins容器进行组合?
发布于 2022-04-14 11:06:22
您正在通过host.docker.internal进行通信。
这意味着您将通过运行容器的主机从1个容器转到另一个容器。
你为什么不直接从一个容器到另一个容器,而不提主机。这也更好,因为您失去了host.docker.internal的依赖性(它并不总是在所有平台上工作)
直接从一个容器到另一个容器可以通过两种方式完成:
码头工
把所有的集装箱规格放进一个码头-合成文件.然后,“其他”容器可以通过它们的服务名称在docker-组合文件中连接到。
使用IP-网络
首先,创建自己的对接网络,并将第三个容器函数作为proxyserver (运行Nginx)。然后给每个容器一个IP地址,您就可以通过IP连接。
https://stackoverflow.com/questions/71870457
复制相似问题