linux - 如何访问从 docker 容器暴露的端口?
问题描述
$ docker container ls --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}" -a
CONTAINER ID NAMES PORTS
ae87d83af7d3 hopeful_engelbart
d13e260c4dec unruffled_bouman
db2c482de210 jenkinsci 0.0.0.0:8080->8080/tcp, 50000/tcp
cd201cbd413e xyz 0.0.0.0:5000->5000/tcp
c64c32ac68b8 pqr
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ae87d83af7d3 442c97a73937 "/bin/bash" 11 minutes ago Exited (0) 9 minutes ago hopeful_engelbart
d13e260c4dec 442c97a73937 "/bin/bash" 27 minutes ago Exited (0) 24 minutes ago unruffled_bouman
db2c482de210 jenkins/jenkins:lts "/sbin/tini -- /usr/…" 3 days ago Up 41 minutes 0.0.0.0:8080->8080/tcp, 50000/tcp jenkinsci
cd201cbd413e 442c97a73937 "bash" 3 days ago Up 7 minutes 0.0.0.0:5000->5000/tcp xyz
c64c32ac68b8 442c97a73937 "bash" 3 days ago Exited (0) 2 days ago pqr
上面的输出表明端口 5000 已经暴露(我希望如此)。
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' xyz
172.17.0.3
现在当我从主机上做:
wget -c 172.17.0.3:5000
--2019-12-30 16:26:44-- http://172.17.0.3:5000/
Connecting to 172.17.0.3:5000... failed: Connection refused.
既然它被暴露并且容器正在运行,那么访问该端口的方法是什么?
$ wget -c localhost:5000
--2019-12-30 16:41:57-- http://localhost:5000/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:5000... connected.
HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers.
Retrying.
--2019-12-30 16:41:58-- (try: 2) http://localhost:5000/
Connecting to localhost (localhost)|127.0.0.1|:5000... connected.
HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers.
Retrying.
解决方案
首先,检查您是否有一个应用程序,正在侦听容器内的端口。只需尝试从您的容器连接到它:
docker exec xyz wget 127.0.0.1:5000
如果它可以工作,那么你的端口暴露有问题,否则,你的容器内没有运行 Web 服务器。
你得到的错误
Read error (Connection reset by peer) in headers.
似乎指向您的 Web 服务器中的问题,而不是连接问题。
推荐阅读
- vue.js - 具有多个复选框和一个 v-model 的组件
- ajax - Wordpress Ajax 获取 Json 数据
- typescript - NGRX 和 tsconfig 严格标志
- python - 无法在颜色上触发鼠标按下事件
- scala - 如何从 Option[Seq[Case Class]] 中提取 Seq[String]
- postman - 如何通过 POSTMAN 使用 AWS Translate“TranslateText”API
- python - Django项目css和js未加载
- python-3.x - Python中的for循环:列表分配索引超出范围
- c++ - 光线追踪 - 光线与平行四边形
- javascript - 加载后如何进行聊天更新?