Containers are efficient(and most likely the future) for PaaS/SaaS type of applications, where individual Instance (VM/Container) is not treated as a "computer" or Infrastructure.
Another benefit for PaaS/SaaS is that you don't necessarily sell RAM or DISK, you sell an application/service and thus can take FULL advantage of containers, like: - more efficient resources sharing(on host) - dynamic resources re-balancing - quicker start/stop/etc
Containers can be used to offer IaaS, but as was already mentioned in this thread, a few edge cases (custom kernel or kernel module, any filesystems support, any firewall support) prevent it due to support/operations overhead.