2016-05-19 25 views
1

まず、私は次の設定を使用して2つのドッカホストを作成します。私は上のコンテナからNode2でコンテナにpingを実行しようとすると、その後FirewalldはDocker Overlayネットワークと連携できますか?

docker network create -d overlay my-overlay-network 

## CLUSTER CONFIGURATION 
# Firewall: firewalld 
# OS: CentOS7 
# IPs: 
- 10.10.2.3 
- 10.10.2.4 

# Docker daemons: 
/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375 \ 
      --cluster-store=consul://10.10.2.3:8500 \ 
      --cluster-advertise=10.10.2.3:2375 
/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375 \ 
      --cluster-store=consul://10.10.2.3:8500 \ 
      --cluster-advertise=10.10.2.4:2375 

をその後、私は、オーバーレイネットワークを作成しますコンテナのホスト名を使用して、ノード1は:

# ssh 10.10.2.4 
docker run --net my-overlay-network --hostname 10-10-2-4-container centos /bin/sh -c 'while true; do sleep 1; done' 

# Start firewalld, and open ports on both machines 
systemctl start firewalld 
/usr/bin/firewall-cmd \ 
    # Add Consul ports 
    --add-port=8300/tcp \ 
    --add-port=8301/tcp \ 
    --add-port=8301/udp \ 
    --add-port=8302/tcp \ 
    --add-port=8302/udp \ 
    --add-port=8400/tcp \ 
    --add-port=8500/tcp \ 
    --add-port=8600/tcp \ 
    --add-port=8600/udp 
    # Add Docker ports 
    --add-port=2375/tcp \ 
    --add-port=7946/tcp \ 
    --add-port=7946/udp \ 
    --add-port=4789/tcp 

# From Node1. This fails! The hostname resolves correctly 
# to the right subnet and IP, but the ping packet doesn't return. 
docker run --net my-overlay-network centos ping -c node2-container 


# After disabling the firewall, it works fine. 
systemctl stop firewalld # From 10.10.2.3 
systemctl stop firewalld # From 10.10.2.4 
docker run --net my-overlay-network centos ping -c 10-10-2-4-container 

基本的には、ファイアウォールがオンになっているとき、私は私のノードにpingを実行することはできませんように見えます。ホスト名が正しく解決されているようです。 Dockerのオーバーレイネットワークで動作するようにファイアウォールを設定するにはどうすればよいですか?

+0

私の答えを批判したり、説明を求めたり、デモなどを提供するのをためらったりしないでください。私は本当にこの問題を解決したいと思っています:)。 – robert

答えて

2

はい、できます。

firewall-cmd \ 
    --add-port=2375/tcp \ 
    --add-port=4789/udp \ 
    --add-port=7946/tcp \ 
    --add-port=7946/udp 

4789ポートはVXLANのためである:

これらは、マルチホストドッカーセットアップ/ wが動作するように、オーバレイネットワークのために開かれている必要があるポートです。これはUDP上で動作します。また、KVシステムが使用するポート、特にDNS解決用のポートを開放する必要があります(領事はDNS解決のために8600 UDP/TCPでリッスンします)。

+0

だから* udp *の代わりに* tcp *を使ってポート4789を開くのは間違いでした。あなたがそれを修正したとき、それはすべて働いたのですか? –

関連する問題