我如何才能得到一个docker容器来暴露端口,同时又可以阻止整个Internet?

时间:2019-01-17 15:07:02

标签: docker networking

我想运行一个无法访问外部互联网的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/) ...

现在从容器外部:

$ docker port 981f253788ad 
$ curl localhost:8000
curl: (7) Failed to connect to localhost port 8000: Connection refused

1 个答案:

答案 0 :(得分:1)

您可以尝试使用带有--internal选项的自定义网络,然后将容器附加到该网络:

$ docker network create --internal internal-network
$ docker run --rm -it -p 8000:8000 --network=internal-network python bash