Yes, you are correct that the only way to specify a custom image in a batch job is to use an instance template. You cannot specify an image family in an InstancePolicy alongside the machineType. However, you can specify the image family when you create an instance template, and then use that instance template in your job.
Here’s an example of how you can specify an image family when creating an instance template:
Your understanding is correct in that an instance template is the only way to specify a custom image today. The InstancePolicy boot_disk field within the v1alpha API allows for the image family to be specified, and this capability will soon be introduced to the v1 API.