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地址。
- 与docker的Django不运行自定义应用程序的迁移
- uWSGI通过Docker的Supervisord服务应用程序
- docker-compose:尝试“up”容器时没有gunicorn
- docker-compose不下载requirements.txt文件的附加内容
- 用Django项目在Docker中创buildpostgresql数据库
- docker-compose为一个纯数据容器和web服务器postgresql
- 如何链接构builddocker集装箱?
- 在Docker容器中安装anaconda时出错
- 使用预configuration的Docker容器进行Elastic Beanstalk Django部署