def layers(self): """ similar as parent images, except that it uses /history API endpoint :return: """ # sample output: # { # "Created": 1457116802, # "Id": "sha256:507cb13a216097710f0d234668bf64a4c92949c573ba15eba13d05aad392fe04", # "Size": 204692029, # "Tags": [ # "docker.io/fedora:latest" # ], # "Comment": "", # "CreatedBy": "/bin/sh -c #(nop) ADD file:bcb5e5c... in /" # } try: response = self.d.history(self.image_id) except docker.errors.NotFound: raise NotAvailableAnymore() layers = [] for l in response: layer_id = l["Id"] if layer_id == "<missing>": layers.append(DockerImage(l, self.docker_backend)) else: layers.append(self.docker_backend.get_image_by_id(layer_id)) return layers
def net(self): """ get ACTIVE port mappings of a container :return: dict: { "host_port": "container_port" } """ try: return NetData(self.inspect(cached=True).response) except docker.errors.NotFound: raise NotAvailableAnymore()
def metadata_get(self, path, cached=True): """ get metadata from inspect, specified by path :param path: list of str :param cached: bool, use cached version of inspect if available """ try: value = graceful_chain_get(self.inspect(cached=cached).response, *path) except docker.errors.NotFound: logger.warning("object %s is not available anymore", self) raise NotAvailableAnymore() return value
def display_inspect(self): try: return json.dumps(self.inspect().response, indent=2) except docker.errors.NotFound: raise NotAvailableAnymore()