簡體   English   中英

無法使用docker consul ping另一台主機中的容器

[英]Cannot ping container in another host with docker consul

我有3台CentoS 7機器。 我試圖建立一個cassandra集群。 如果cassandra節點位於同一網絡中,它可以發現所有其他節點,因此我一直在尋找一種方法在不同主機上設置2個容器,但仍然使它們像在同一網絡中一樣工作。

我試着通過以下步驟與領事一起做:

  1. 在machine0上創建一個consul容器:

    docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

  2. 將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 \\

  3. 創建覆蓋網絡docker network create -d overlay --subnet=10.10.10.0/24 testNetwork

  4. 在machine1和machine2上創建busybox容器,使用我的測試網絡machine1- docker run -itd --name container1 --net testNetwork busybox machine2- docker run -itd --name container2 --net testNetwork busybox

  5. 從任一台機器(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": {} 

    }

  6. 試圖從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 ...

如果有人對我的問題有不同的方法或建議,我很樂意聽到它!

提前致謝!

我無法理解你在這里與領事一起努力,因為你顯然沒有在你的方法中使用它。 您可以在以下帖子中查看我的答案,以便更清楚地了解它:

我的docker鏡像是否需要自己的consul客戶端實例?

希望它能提供一些清晰度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM