Docker 无法通过HTTP请求从单独的容器访问Jenkins容器
我有一个服务,Docker 无法通过HTTP请求从单独的容器访问Jenkins容器,docker,jenkins,networking,docker-compose,dockerfile,Docker,Jenkins,Networking,Docker Compose,Dockerfile,我有一个服务,someservice,它需要向一个Jenkins服务发出http请求,这两个服务都运行在单独的Docker容器中。我的问题是,无论何时我提出请求,我的连接都会被拒绝 some service和Jenkins分别在主机名为some service和Jenkins的端口上运行 我可以在本地机器上成功点击some service之外的Jenkins,方法是: curl -v http://localhost:4040/ 但是,我无法通过以下方式从内部某些服务联系到詹金斯: curl
someservice
,它需要向一个Jenkins
服务发出http请求,这两个服务都运行在单独的Docker容器中。我的问题是,无论何时我提出请求,我的连接都会被拒绝
some service
和Jenkins
分别在主机名为some service
和Jenkins
的端口上运行
我可以在本地机器上成功点击some service
之外的Jenkins
,方法是:
curl -v http://localhost:4040/
但是,我无法通过以下方式从内部某些服务
联系到詹金斯:
curl -v http://jenkins:4040/
我正在使用这个简单的Docker compose.yaml
文件来创建一些服务
和Jenkins
:
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
您无法从服务内部访问,因为端口4040仅向主机公开。这就是为什么curl-vhttp://localhost:4040/
在主机上运行
如果您想从另一个容器中访问jenkins,则必须使用端口8080,因为该端口在网络中公开。所以curl-vhttp://jenkins:8080/
在您的服务范围内将起作用
希望这能澄清这一点。您无法从服务内部访问,因为端口4040仅暴露于主机。这就是为什么curl-vhttp://localhost:4040/
在主机上运行
如果您想从另一个容器中访问jenkins,则必须使用端口8080,因为该端口在网络中公开。所以curl-vhttp://jenkins:8080/
在您的服务范围内将起作用
希望这能澄清这一点。刚刚通过
一些服务
使用curl-v成功联系到了Jenkins
http://jenkins:8080/
,虽然我不知道为什么会这样做?只是在一些服务中使用curl-v成功地联系到了Jenkins
http://jenkins:8080/
,虽然我不知道为什么会这样?这完全有道理。非常感谢。这完全有道理。非常感谢。