<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def list_containers(self):
 """ List all available docker containers. Container objects returned from this methods will contain a limited amount of metadata in property `short_metadata`. These are just a subset of `.inspect()`, but don't require an API call against dockerd. :return: collection of instances of :class:`conu.DockerContainer` """

        result = []
        for c in self.d.containers(all=True):
            name = None
            names = c.get("Names", None)
            if names:
                name = names[0]
            i = DockerImage(None, identifier=c["ImageID"])
            cont = DockerContainer(i, c["Id"], name=name)
            # TODO: docker_client.containers produces different metadata than inspect
            inspect_to_container_metadata(cont.metadata, c, i)
            result.append(cont)
        return result