[英]Cannot ping container in another host with docker consul
我有3台CentoS 7機器。 我試圖建立一個cassandra集群。 如果cassandra節點位於同一網絡中,它可以發現所有其他節點,因此我一直在尋找一種方法在不同主機上設置2個容器,但仍然使它們像在同一網絡中一樣工作。
我試着通過以下步驟與領事一起做:
在machine0上創建一個consul容器:
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
將consul配置添加到machine1和machine2中的/lib/systemd/system/docker.service
:
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=consul://*machine0-external-ip*:8500/network --cluster-advertise=machine0-external-ip:2375 --userland-proxy=false \\
創建覆蓋網絡docker network create -d overlay --subnet=10.10.10.0/24 testNetwork
在machine1和machine2上創建busybox容器,使用我的測試網絡machine1- docker run -itd --name container1 --net testNetwork busybox
machine2- docker run -itd --name container2 --net testNetwork busybox
從任一台機器(1或2)我可以通過此命令docker network inspect testNetwork
看到網絡中的容器,從而導致:
{ "Name": "testNetwork", "Id": "12020d9c66762dcf4db74cb44ffed2fe8f9e3eb531fe5e4e3f16640185154447", "Scope": "global", "Driver": "overlay", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "10.10.10.0/24" } ] }, "Internal": false, "Containers": { "c704cdedf845507891ea25ece4536e35a8984ffc98850d44fd6520e1954a203a": { "Name": "container1", "EndpointID": "345a3895f6480eecaa3e03f83ff021197a3241ebedca5cb635c06f8a83d259d6", "MacAddress": "02:42:0a:0a:0a:02", "IPv4Address": "10.10.10.2/24", "IPv6Address": "" }, "ep-c507d3c94db20b519da28319bcb07e63297d2f2c12c0fdd52e88807bbb255743": { "Name": "container2", "EndpointID": "c507d3c94db20b519da28319bcb07e63297d2f2c12c0fdd52e88807bbb255743", "MacAddress": "02:42:0a:0a:0a:03", "IPv4Address": "10.10.10.3/24", "IPv6Address": "" } }, "Options": {}, "Labels": {}
}
試圖從container1 docker exec container1 ping -w 3 container2
。 這導致了
PING container2 (10.10.10.3): 56 data bytes --- container2 ping statistics --- 3 packets transmitted, 0 packets received, 100% packet loss
您可以看到ping將轉到子網地址(10.10.10.3),這就是我想要的。
我究竟做錯了什么?
根據我的理解,容器應該通過自動處理的網絡docker_gwbridge
。 為了知道這個子網在哪里是真實的(在不同的機器上)我在數據包上運行了一個嗅探器,看起來容器只是在他的內部網絡中查找該地址,甚至沒有通過docker_gwbridge
...
如果有人對我的問題有不同的方法或建議,我很樂意聽到它!
提前致謝!
我無法理解你在這里與領事一起努力,因為你顯然沒有在你的方法中使用它。 您可以在以下帖子中查看我的答案,以便更清楚地了解它:
希望它能提供一些清晰度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.