The best explanation for the difference between the two concepts can be found in the docs. Here's a link: https://docs.journeyapps.com/reference/technical/app-updates
Essentially the Container is the thing that you install on your device, and gives your app and the Runtime access to device-specific functionality.
The Runtime is the thing that interprets your app code and assets, and then displays the app for users to interact with. The runtime is much more dynamic, and can be updated over-the-air with your app. You can specify the version of the runtime your app should use from the App Editor in the App Settings under "Version Management".