Deploy containers to specific container ship.
        'restart_policy' = {"maximum_retry_count": 5, "name": "always"}

def deploy_containers(self, commercial_invoice, tag=None, env=None):
        """
        Deploy containers to specific container ship.
        'restart_policy' = {"maximum_retry_count": 5, "name": "always"}
        """
        commercial_invoice = self.__validate_commercial_invoice(commercial_invoice, 'deploy')

        fleet = self.__assemble_fleet(commercial_invoice)
        logger.info('Running deploy.')

        try:
            for address, container_ship in six.iteritems(fleet):
                # write state file
                self.__write_state_file(address, commercial_invoice.data_center, commercial_invoice.environment)

                # get new transport service for each container ship
                transport_service = commercial_invoice.transport_service

                # if source tag is provided override what was parsed in image.
                if tag:
                    transport_service.source_tag = tag

                # if env is provided merge what has been passed.
                if env:
                    transport_service.container_config.merge_env(env)

                # during a deploy always restart containers on failure. if detach is true.
                if transport_service.container_config.detach:
                    transport_service.host_config.restart_policy = {"maximum_retry_count": 5, "name": "always"}

                # validate service configs for deployment
                self.__service_deployment_validation(transport_service)

                # check with dispatch to see if its okay to export.
                self.__wait_for_dispatch(address)

                logger.info("dispatching service: {0} on host: {1}.".format(transport_service.alias, address))
                self.__dispatch(container_ship, transport_service)

                if self._bill_of_lading.get('failures'):
                    container_ship.recall_service(transport_service)
                else:
                    container_ship.offload_previous_containers(transport_service)
                    # clean up service expired service cargo.
                    container_ship.offload_expired_service_cargo(transport_service)

            return False if self._bill_of_lading.get('failures') else True
        finally:
            # complete distribution and delete state file.
            self.__complete_distribution(commercial_invoice)