Docker port publishing issues

Hello everyone!

As my first post, I would like to ask something that might be just a simple solution, but it has bothering me for quite some time now:

I have created a simple setup with CC100 and native wago docker with all its data stored on SD card.

As a part of simple stack, I have created containers that run:

  • Node-RED
  • InfluxDB
  • Grafana

Each in it’s own container, with certain settings, but each has port publishing enabled:

Each container has its --restart property set to =unless-stopped as well.
Everything is running smooth up till the point CC100 gets reset.

When turning controller back on, all containers start running again, but by some random selection some of them are no longer reachable via allocated ports.

P.S. All containers are part of default bridge network, although I have been testing moving them to user-defined bridge network (no luck).

Have someone came across such an issue?

Thanks in advance,

Marcin

Hi.

Yes, this has bothered me sometimes using the TIG stack, and with Grafana. Trying “nmap -p 3000 IP_ADDR” gives port in “filtered” state, not “open”. As the load on the CPU is rather big with the setup I managed to solve this by making a startup script launching Influx and Grafana first then Telegraf last. Telegraf also has a connection to port 3000 in this case (livestream). Used a wait command in between.

If you dont use docker compose, the bash script could look something like this:

docker start influx
sleep 10
docker start grafana
sleep 60
docker start telegraf

chmod it and put it in “/etc/init.d” folder and make a symlink in “etc/rc.d” folder like this:
“ln -s /etc/init.d/SCRIPTNAME /etc/rc.d/SYMLINKNAME”

Thank you for your reply Grim,

I have just noticed that by running a command:

iptables -L -v -n

my result is:

Being slightly confused with “Chain FORWARD”, “Chain DOCKER” indicates to me that during redistribution of IP addresses to containers after a reboot, if container is given a different address than before, final ports for controller are linked multiple times to different IP sources from bridge network. Because of that, no content is displayed (unless both sources display same thing).

Given example above, I can tell you that out of 3 containers: Node-RED, influx and Grafana it is only Grafana that can be reached! Because of correct port mapping (despite same record put twice).

Reflections
I guess the way to go is to reserve IP addresses through their MAC addresses (that docker generates). or as you have kindly mentioned, to start containers in a controlled order to ensure they are always given same addresses from DHCP server.

I will let know if I was successful - may involve creating user bridge network to be able to reserve IPs for certain MAC addresses.

On a related note:
The delayed starting of containers is also sometimes necessary when using the 750-8217 with a Cellular internet connection. The cellular network takes some time to connect and assign an IP, and if the container starts before this occurs, it results in the same issue described above.

Hi There,

somehow i even had same issues when using separated networks on X1 and X2 Interface of the CC100 and also the PFC200 Devices.

In this case i changed the daemon.json file and added an entry to use br0 as default network.

Stop dockerdaemon first:

Open SSH Terminal and type in:

/etc/init.d/dockerd stop

Wait for dockerdaemon is stopped.

then add the following parameter into the daemon.json ( /etc/docker/daemon.json ) :

you can use nano to edit the file.

nano /etc/docker/daemon.json

Enter additional parameter in the config file

“bridge”: “br0”,

Then Save and restart dockerdaemon

/etc/init.d/dockerd start

At least i had Problems with the Docker Networks by Upgrading from FW22 to FW22 SP1 with Wago Upload. No Network Traffic to the Containers was possible, checked it with Wireshark also.
after upgrading FW with SD Card it worked fine :slight_smile:

2 Likes