Apps can request a number of instances and the id associated with a container is the container id. However, container ids are not a reliable way to load balance a work load across several instances. This is because container id is not guaranteed to be well-distributed for specific role instances.
A good example of application requiring a id is memcached where clients need to know which memcached daemon instance to connect for specific keys (e..g hash a key to obtain an integer and access the daemon associated with that integer). Alternatively, another example will be an application of peers that select workload based on their id. Say, an application processes 100 data points and component instances can select which sub-range to process based on their id.