【发布时间】:2016-02-25 14:21:57
【问题描述】:
基于图像'python:2.7',我创建了两个容器:container1、container2
test1 的 Dockerfile:
FROM python:2.7
EXPOSE 6789
CMD ["bash", "-c", "'while true;do sleep 1000;done;'"]
test2 的 Dockerfile:
FROM python:2.7
EXPOSE 9876
CMD ["bash", "-c", "'while true;do sleep 1000;done;'"]
然后我用上面的dockerfiles构建了两个新的镜像,命名为:test1,test2
容器1:
docker run --name container1 test1
我还在 container1 的 6789 端口上设置了一个 Django 服务器:
#In Django workspace
./manage.py runserver 6789
容器2:
docker run --name container2 --link container1:container1 test2
我还在 container2 的 9876 端口上设置了一个 Django 服务器:
#In Django workspace
./manage.py runserver 9876
在 container2 中,当我运行时
curl container1_ip:6789
我收到连接被拒绝错误。
如何配置它以使其正常工作?
我还用官方的nginx镜像创建了一个容器,它有两个默认端口(80、443)暴露出来,然后创建了另一个容器链接到nginx容器,在容器中,我做了同样的事情
curl nginx_ip:80 #successful
和
curl nginx_ip:443 #connection refused
为什么会这样?为什么80好用,443不好用?
【问题讨论】:
-
看起来你在这些端口上没有任何监听?
-
至少,
ping container1_ip from container2有效吗? -
您可能已经暴露了端口,但不要将任何进程绑定到它们。由于没有接受连接的过程,您会收到
connection refused错误消息。 -
抱歉信息缺失,我已经把它们加起来了。实际上,我在两个端口(6789、9876)上都设置了 Django 服务器。