gpt4 book ai didi

docker - 如何发布与默认端口不同的端口?

转载 作者:行者123 更新时间:2023-12-02 18:44:52 27 4
gpt4 key购买 nike

我正在学习docker,并从一个简单的基于python的Web服务器开始,该服务器在被调用时会回复“Hello World”。我很难理解如何公开特定的端口。

背景

# the Dockerfile
FROM ubuntu
RUN apt-get -qq update
RUN apt-get install -y python
RUN echo "Hello world" > index.html
CMD ["/usr/bin/python", "-m", "SimpleHTTPServer"]

默认情况下,此Web服务器公开端口8000:
$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

当启动容器时,我得到
# docker run -d  06b5c2fc603e
2ca568ba0799ab00af72f230ec99038e225265a4af073da54026b7a90bacb0c9
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2ca568ba0799 06b5c2fc603e "/usr/bin/python -m 4 seconds ago Up 3 seconds tender_davinci
# docker inspect 2ca568ba0799 | grep IPAddress
"IPAddress": "172.17.0.84"

检查端口8000是否在分配的IP地址上应答-可以。
# curl -XGET 172.17.0.84:8000
Hello world

现在,我想发布此端口,以便其他主机可以访问。
# docker run -d -p 8000:8000 06b5c2fc603e
6715c6fd58100c27fbdc26895755e164ae3b241f6bd6e43c331ca44cf388d6f1
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6715c6fd5810 06b5c2fc603e "/usr/bin/python -m 3 seconds ago Up 3 seconds 0.0.0.0:8000->8000/tcp cocky_tesla

从远程站点检查-有效
# curl -XGET 10.242.136.232:8000
Hello world

现在问题:当我想要更改已发布的端口(从8000到8888)时,此操作失败:
# docker run -d -p 8000:8888 06b5c2fc603e
0f2e9f79a51e4710f9e8be90376e080928904e6b7320771ca5ad4f829043a6ca
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0f2e9f79a51e 06b5c2fc603e "/usr/bin/python -m 4 seconds ago Up 3 seconds 0.0.0.0:8000->8888/tcp adoring_goodall

并从远程主机访问
# curl -XGET 10.242.136.232:8888
curl: (7) couldn't connect to host
docker似乎正确地对端口( 0.0.0.0:8000->8888/tcp)进行了NAT,所以为什么它与容器中服务公开的端口一经更改就不能立即可用?

注意:没有防火墙/网络ACL会阻止流量

关于网络的主题有几个问题( an answer to one of them提供了很好的概述),并且 the docs相当清楚(尤其是带有示例),所以我很茫然。

最佳答案

您必须像这样交换端口的顺序:

# docker run -d -p 8888:8000 06b5c2fc603e

根据docker run文档 here,第一个端口是主机端口,第二个端口是容器端口-> hostPort:containerPort

关于docker - 如何发布与默认端口不同的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32719656/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com