As far as I understand you have to provide the source code of all GPL licensed programs within a docker image but not your own proprietary code within that image.
This is true insofar as your code is not part of the GPL software. If you write code that is part of the same work (under copyright law) as someone else's GPL-licensed code, then the GPL requires you to share the source code of everything that is part of that GPL-licensed work.
...if I sell a service as a docker image through AWS, would this be considered distribution from the GPLs viewpoint?
The important question to consider is: can GPL-licensed material from your container end up in a user's local computer memory?
In the case of GitHub and other web services, the answer is often "no": the GPL code receives input via a web service and then hands its output back to the web service for delivery to the user. At no point can a user view or download GPL-licensed material.
However, it is a different matter if your users have the ability to view binary GPL-licensed files (even clumsily, e.g., by viewing binary files encoded as text). This might happen if your offer a service (like remote access to a command shell) that as part of its operation allows the user to view the software that makes up the service. If there is ever a point at which a GPL-licensed binary file loads into the user's local computer memory, then distribution has taken place, and you have an obligation to provide corresponding source code for the binary components that the user is able to view.