I haven't used packer but it seems like operates at a different level? Dockerfiles are mostly about _provisioning_ an existing system but packer was more about getting correct configuration in place for VM providers and allowing you to specify strings to be run for provisioning.
Edit: not an edit, but I realize it's a double standard to think of Dockerfile's as anything but specifying strings for provisioning.