无法通过HTTP请求从单独的容器访问Jenkins容器



我有一个服务some-service,它需要向Jenkins服务发出http请求,这两个服务都在单独的Docker容器中运行。我的问题是,每当我提出请求时,我的连接都会被拒绝。

some-serviceJenkins分别在主机名为some-servicejenkins的端口30304040上运行。

我可以用在some-service之外的本地机器上成功命中Jenkins

curl -v http://localhost:4040/

但是,我无法使用从some-service内部到达Jenkins

curl -v http://jenkins:4040/

我使用这个简单的Docker-compose.yaml文件来创建some-serviceJenkins:

version: '3'
services:
some-service:
container_name: service
image: service:latest
hostname: some-service
build:
context: service/
dockerfile: Dockerfile
environment:
GET_HOSTS_FROM: dns
networks:
- eg-net
ports:
- 3030:3030
depends_on:
- jenkins
links:
- jenkins
labels:
kompose.service.type: LoadBalancer
jenkins:
container_name: jenkins
image: jenkinsci/blueocean
restart: always
hostname: jenkins
networks:
- eg-net
ports:
- 4040:8080
volumes:
- ./jenkins-data:/var/jenkins_home
networks:
eg-net:
driver: bridge

您无法访问http://jenkins:4040/因为端口4040仅向主机暴露。这就是主机上curl -v http://localhost:4040/工作的原因。

如果你想从另一个容器中访问jenkins,你必须使用端口8080,因为这个端口在网络中是公开的。因此,您服务范围内的curl -v http://jenkins:8080/将起作用。

希望这能澄清这一点。

最新更新