まず、私は次の設定を使用して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のオーバーレイネットワークで動作するようにファイアウォールを設定するにはどうすればよいですか?
私の答えを批判したり、説明を求めたり、デモなどを提供するのをためらったりしないでください。私は本当にこの問題を解決したいと思っています:)。 – robert