While preparing a custom Docker image for a tool I wanted to use I encountered a problem that kept me busy for some time. The container could be built and started without any problems but the application in the container was simply not accessible via the published port.
Even after minutes of debugging and checking (and re-checking over and over again) that the right port was exposed and the application in the container is listening on that port I was not able to get it to work… But I had a suspicion now. For some reason I had decided to bind the application in the container to localhost. Though it may sound obvious now, I didn’t expect that with a binding like 127.0.0.0:9000
you can’t publish port 9000
to the host; or maybe I’m just too stupid to fully understand Docker networking. After I changed the binding to 0.0.0.0:9000
everything worked as expected. Anyway, lesson learned.