Cloud-based applications require dynamic resource allocation to cope with changing workloads and unexpected request spikes. The use of container technology increases manageability, portability, and scalability, but changes how the applications are provisioned and maintained. This paper presents MicroCloud, a novel architecture for providing multiple containerized applications with fine-grained resource allocation. MicroCloud consists of a TOSCA library, for specifying the topology of containerized applications and of their infrastructure, and a meta-workflow, for automatically adapting resource allocation in a coordinated, multi-level, and topology-aware way. MicroClouds's implementation is based on ECoWare, our framework for the management of self-adaptive, cloud-based applications. We evaluated MicroCloud using two applications deployed on Amazon EC2. The experiments focused on guaranteeing the average response time, and showed that the use of containers —with respect to pure virtual machines— can guarantee a 46% improvement (on average) on resource management.