Docker多容器多networking设置
我已经读了几个小时的docker坞,因为我是新来的,我试图创build单独的networking与容器相互沟通。
(这是要求,所以请不要提出单一的networking解决scheme )
这是我docker-compose.yml
文件:
version: '2' services: client: container_name: client build: ./rest_client ports: - "5858:5858" - "3000:3000" networks: - client - server1 server1: container_name: server1 build: ./server_instance ports: - "5841:5840" - "4001:4000" networks: - client - server1 node1: container_name: node1 build: ./node_instance ports: - "5851:5850" - "5001:5000" networks: - server1 networks: client: driver: bridge server1: driver: bridge
为了简单起见,我摆脱了大部分服务器和节点来澄清问题。
有了上述设置,我假设client
能够通过client
或服务器1networking与server1
进行通信。
当我尝试发送基本如下所示的请求时:
http://client:4001/api/requestnode
或这个 :
http://server1:4001/api/requestnode
从client
我越来越:
错误:连接ECONNREFUSED 172.19.0.5:4001
这意味着服务不会彼此看到?
当我运行一个单一的networkingtesting时,一切都很好。
我究竟做错了什么 ?
帮助非常感谢!
谢谢!
—编辑— docker run -it --rm --net container:id nicolaka/netshoot netstat -lnt
client
和服务器1
另外从我的本地机器屏幕截图:
client
:
server1
:
matewilk@matewilk:~$ docker run -it --rm --net container:658d89ba410f nicolaka/netshoot nslookup server1 nslookup: can't resolve '(null)': Name does not resolve Name: server1 Address 1: 172.19.0.4 server1.multisite_server1 matewilk@matewilk:~$ docker run -it --rm --net container:f032cfa52c60 nicolaka/netshoot ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 269: eth1@if270: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.18.0.2/16 scope global eth1 valid_lft forever preferred_lft forever 271: eth0@if272: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:13:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.19.0.4/16 scope global eth0 valid_lft forever preferred_lft forever
对于容器到容器的通信,没有必要发布目标端口,你将直接与目标容器进行通信。 目标容器中的应用程序需要监听所有接口(0.0.0.0,而不是127.0.0.1)。 假设是这样,你应该可以连接到:
http://server1:4000/api/requestnode
服务器启动后。 请注意,客户端可能在服务器之前启动,因此您需要实施某种forms的重试或等待脚本,以确保服务器已经启动。
- 在Docker中运行三个进程,找不到未find的.py文件
- gcloud docker无法在Compute Engine虚拟机上工作
- python创build目录并在Docker容器中写入文件
- Django的docker容器无法连接到MySQL容器,错误“无法连接到'db'(111)上的MySQL服务器”)
- 在Bluemix中创buildDocker容器时出错
- 如何在本地部署Docker的Kubernetes?
- 如何configurationHibernate ORM数据库属性以使用Docker
- Docker rails应用程序和git
- Docker-Flink:在Docker Swarm的不同节点中,TaskManager无法findJobManager