Okay I figured it out, and I'm still a bit confused ![]()
It turns out this entire time I had a local Elasticsearch version running on my the 9200 port which I've forgotten about. The part that confuses me to no end is how Docker was able to use the 9200 port when it was already being used by a different running process!
So this entire time all my requests to localhost:9200 was actually targeting my local elasticsearch setup (which was v6, even), rather than the Docker one.