My first line becomes:
FROM debian@sha256:14e15b63bf3c26dac4f6e782dbb4c9877fb88d7d5978d202cb64065b1e01a88b
Okay, that's easy.Now, what about older versions of packages in debian's apt repos that have been deleted? How do I get those?
I run my own apt mirror I guess which I update in lock-step with my dockerfile and thus don't let the Dockerfile reach out to the network.
Is this any different from what you do in a shell script on a server? You use btrfs/zfs/whatever to snapshot the initial version and back it up, you run an apt repository so you can pin package versions, you snapshot before and after updating...
I don't see how a docker image definition makes any of this easy. There's not even a flag to disallow network access during "docker build".
The claim I'm responding to is "docker image definitions are idempotent as a matter of principle".
The large majority of dockerfiles I've seen are not idempotent. Yes, it's possible to make them idempotent, but they do not make it easy.