A computer-implemented method including executing, by at least one processor of a computing device, instructions to implement the method, the instructions being recorded on a non-transitory computer-readable storage medium, the method comprising: receiving a request to provision a plurality of containers (130, 140, 150) of an application across a plurality of data center hosts; identifying, from the plurality of containers, a first container to provision based on, at least, a host to be used to implement the first container, and based on network requirements of a network internal to the host, wherein a daemon/engine of the host is configured to manage containers implemented in the host, wherein respective internal IP addresses of implemented containers on a host internal network are only visible to the daemon/engine and wherein a bridge of the host is configured to store port associations of the form: host's public IP address: port number i -> container j's internal IP address: port number k; selecting a first host from the plurality of data center hosts to implement the first container based on, at least, compute requirements of the first container, the network requirements of the host internal network, configuration of the plurality of data center hosts, and performance metrics of the plurality of data center hosts; identifying, from the plurality of containers, a second container to provision based on, at least, network requirements between the second container and the first container; and selecting a second host from the plurality of data center hosts to implement the second container based on, at least, compute requirements of the second container, the network requirements between the second container and the first container, the configuration of the plurality of data center hosts, and the performance metrics of the plurality of data center hosts. receiving a request to provision a plurality of containers (130, 140, 150) of an application across a plurality of data center hosts; identifying, from the plurality of containers, a first container to provision based on, at least, a host to be used to implement the first container, and based on network requirements of a network internal to the host, wherein a daemon/engine of the host is configured to manage containers implemented in the host, wherein respective internal IP addresses of implemented containers on a host internal network are only visible to the daemon/engine and wherein a bridge of the host is configured to store port associations of the form: host's public IP address: port number i -> container j's internal IP address: port number k; selecting a first host from the plurality of data center hosts to implement the first container based on, at least, compute requirements of the first container, the network requirements of the host internal network, configuration of the plurality of data center hosts, and performance metrics of the plurality of data center hosts; compute requirements of the first container, the network requirements of the host internal network, configuration of the plurality of data center hosts, and performance metrics of the plurality of data center hosts; identifying, from the plurality of containers, a second container to provision based on, at least, network requirements between the second container and the first container; and selecting a second host from the plurality of data center hosts to implement the second container based on, at least, compute requirements of the second container, the network requirements between the second container and the first container, the configuration of the plurality of data center hosts, and the performance metrics of the plurality of data center hosts.