如何让docker容器在大范围阻塞internet时暴露端口?
我想运行一个无法访问外部internet的docker容器。我已经成功地使用了如何让docker容器在大范围阻塞internet时暴露端口?,docker,networking,Docker,Networking,我想运行一个无法访问外部internet的docker容器。我已经成功地使用了--network=none。但是现在我想从这个容器中托管一个web服务器,并从外部访问它。尝试时,我发现端口映射完全被忽略: $ docker run --rm -it -p 8000:8000 --network=none python bash # python -m http.server Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
--network=none
。但是现在我想从这个容器中托管一个web服务器,并从外部访问它。尝试时,我发现端口映射完全被忽略:
$ docker run --rm -it -p 8000:8000 --network=none python bash
# python -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
现在从容器外部:
$ docker port 981f253788ad
$ curl localhost:8000
curl: (7) Failed to connect to localhost port 8000: Connection refused
您可以尝试使用带有
--internal
选项的自定义网络,然后将容器连接到此网络:
$ docker network create --internal internal-network
$ docker run --rm -it -p 8000:8000 --network=internal-network python bash
试过了,同样的事情也发生了。这个端口并没有真正暴露出来。啊,更正:通过
--内部网络,容器获得了一个我可以直接命中的IP。用-p8000:8000
暴露端口仍然不起作用,但我可以点击该IP上的内部端口,它工作正常。谢谢