Tryton uses python-stdnum for validating the identifiers. I see there is a za_tin already, maybe the za_vat is based on the za_tin?
For contributing to the tryton project you will need to first get za_vat into python-stdnum, and then contribute to the party module in order to include the identifier.
For creating a custom module there is a tutorial.
Personally I do not have experience with docker, so I can not help you with that, hopefully someone who knows will jump in.