You will no doubt point me to some script you wrote as a sysadmin. I wrote similar scripts as a sysadmin. They are unusable to anyone outside your immediate team of sysadmins - you can't use my scripts, and I can't use yours. That's because they're ambiguous. They assume that other things are already present on the system, and don't specify how to make sure that's true. There's a README next to them explaining what they require, how to bootstrap a build and so on.
Dockerfiles don't require a readme. They are not ambiguous. That's why they're useful. They also specify where to drop source files in a container, which allows you to get rid of your custom scp + flip-a-symlink ghetto deployment script.
Please don't pretend that a Dockerfile is some new paradigm shift in how to deploy an app on a remote host. And really, who gives a shit about "custom" vs "standardized" argument passing? And what's with the ghetto references? You do realize under the hood your Dockerfile and my 'ghetto script' are calling the same syscalls, making the same network connections, doing the same i/o, right?
Who gives a shit if my 'script' is 'ghetto' if it's ten times more user accessible, portable and backwards compatible than your proprietary format? A developer isn't going to spend more than 5 minutes looking at what the assholes in ops have given them to do their job; they learn it, they use it, they move on with writing and testing their code. Docker doesn't improve anything or provide anything you couldn't already do before. It just creates a new niche.
Your whole argument for the use of Docker seems to be "we are superior, because our operations are fancier, and we have created a gold standard." Face it: it doesn't matter how the sausage gets made. Docker just prescribes one way for how the meat is ground, vs all the others that work just as well.
Of course, you can achieve something similar with shell scripts, e.g. "if Java is not installed, install it, otherwise go to the next step". But if you get it wrong, or if there is some side-effect, the end result (after running the script multiple times) won't be exactly the same. The Dockerfile (with snapshots at each step) ensures consistency.
It's not a big deal if you are a shell expert and write that kind of script for breakfast, but it's not the case for everyone :)