Linux 如何访问docker容器中暴露的端口?
以上输出显示端口5000已暴露,我希望如此Linux 如何访问docker容器中暴露的端口?,linux,docker,Linux,Docker,以上输出显示端口5000已暴露,我希望如此 $ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ae87d83af7d3 442c97a73937 "/bi
$ 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
现在,当我从主机执行以下操作时:
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.
如果它可以工作,那么您就有端口暴露问题,否则,您的容器中就没有运行web服务器
你得到的错误是什么
docker exec xyz wget 127.0.0.1:5000
似乎指向web服务器中的问题,而不是连接问题。wget-c 127.0.0.1:5000如何?请参阅编辑@KamilCukSo成功了,你接通了。而且?从您所展示的情况来看,xyz容器没有运行服务器,它运行的是bash,因此,无论您是否有暴露的端口,到它的网络连接都将失败。如果它运行的不是交互式shell,那么您需要提供一个示例来演示这一点。除非您在一个非常特定的Docker/host OS配置上,否则Docker inspect IP地址不可用,您不应该查找它。@KamilCuk它显示读取错误。这是什么意思?谢谢你的回复。我应该在容器内手动运行Web服务器吗?如果使用docker run运行它,那么应该手动运行,或者在Dockerfile中写入CMD。如果您使用docker compose,它通常使用docker-compose.yaml编写。查看图片开发人员的文档,应该了解一些相关信息。或者,如果是您的图像,请将ENTRYPOINT或CMD添加到Dockerfile中
docker exec xyz wget 127.0.0.1:5000
Read error (Connection reset by peer) in headers.