<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _prepare_container(self, client, action, volume_container, volume_alias):
 """ Runs a temporary container for preparing an attached volume for a container configuration. :param client: Docker client. :type client: docker.Client :param action: Action configuration. :type action: dockermap.map.runner.ActionConfig :param volume_container: Name of the container that shares the volume. :type volume_container: unicode | str :param volume_alias: Volume alias that is used for map references, for looking up paths. :type volume_alias: unicode | str """

        apc_kwargs = self.get_attached_preparation_create_kwargs(action, volume_container, volume_alias)
        if not apc_kwargs:
            return
        a_wait_kwargs = self.get_attached_preparation_wait_kwargs(action, volume_container)
        client.wait(volume_container, **a_wait_kwargs)
        temp_container = client.create_container(**apc_kwargs)
        temp_id = temp_container['Id']
        try:
            if action.client_config.features['host_config']:
                client.start(temp_id)
            else:
                aps_kwargs = self.get_attached_preparation_host_config_kwargs(action, temp_id, volume_container)
                client.start(**aps_kwargs)
            temp_wait_kwargs = self.get_attached_preparation_wait_kwargs(action, temp_id)
            client.wait(temp_id, **temp_wait_kwargs)
        finally:
            client.remove_container(temp_id)