Docker:暴露的端口不能在另一个容器中访问

基于image'python:2.7',我创build了两个容器:container1,container2

Dockerfile for test1:

FROM python:2.7 EXPOSE 6789 CMD ["bash", "-c", "'while true;do sleep 1000;done;'"] 

Dockerfile for test2:

 FROM python:2.7 EXPOSE 9876 CMD ["bash", "-c", "'while true;do sleep 1000;done;'"] 

然后我用上面的dockerfiles创build了两个新的图像,命名为:test1,test2

Container1:

 docker run --name container1 test1 

我还在container1中的端口6789上设置了一个Django服务器:

 #In Django workspace ./manage.py runserver 6789 

container2的:

 docker run --name container2 --link container1:container1 test2 

我还在container2的9876端口上设置了一个Django服务器:

 #In Django workspace ./manage.py runserver 9876 

在容器2中,当我运行

 curl container1_ip:6789 

我有连接拒绝错误。

我如何configuration它使其工作?

我还创build了一个具有官方nginx图像的容器,它有两个默认的端口(80,443)暴露,然后创build另一个容器链接到nginx容器,在容器中,我做了同样的事情

 curl nginx_ip:80 #successful 

 curl nginx_ip:443 #connection refused 

为什么会发生? 为什么80很好,443不起作用?

你想通过“curl”你的容器的端口6789/9876来做什么? 有什么东西(一个FTP服务器或其他东西?)在这些端口后面?

在尝试从另一个容器到达它之前,应该尝试从容器本身到达它

在container1中:

curlcontainer1_ip:6789

我想你可以访问这些端口,但是在你的容器上没有任何东西在听。

编辑:如果你downvote我,请评论解释为什么,所以我可以提高我的答案,谢谢。

问题不在于如何configurationdocker,而是关于Django的一些configuration问题。 Django默认监听localhost:port ,我们应该指定一个ip地址来监听,或者用'0.0.0.0'来监听所有的ip地址。