docs: 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)