Untitled
import docker import pprint def get_containers(): client = docker.from_env() containers = client.containers.list(all=True) container_dict = {container.name: container.short_id for container in containers} return container_dict def remove_container(container_id): client = docker.from_env() try: container = client.containers.get(container_id) container.remove(force=True) except docker.errors.NotFound: return f"Error: Container matchin '{container_id}' name not found." def remove_all_containers(): client = docker.from_env() containers = client.containers.list(all=True) for container in containers: container.remove(force=True) def get_container_logs(container_name, tail="all"): client = docker.from_env() try: container = client.containers.get(container_name) logs = container.logs(timestamps=True, tail=tail).decode("utf-8").splitlines() return logs except docker.errors.NotFound: return f"Error: Container '{container_name}' not found." except docker.errors.APIError as e: return f"Error: {e}" def start_container(container_name): # TODO: Extend to reacher API client = docker.from_env() try: container = client.containers.get(container_name) container.start() return f"Container '{container_name}' started." except docker.errors.NotFound: return f"Error: Container '{container_name}' not found." except docker.errors.APIError as e: return f"Error: {e}" def stop_container(container_name): client = docker.from_env() try: container = client.containers.get(container_name) container.stop() return f"Container '{container_name}' stopped." except docker.errors.NotFound: return f"Error: Container '{container_name}' not found." # ----------------- Execute in Container Method ----------------- def execute_command_in_container(self, container_name, command): """Execute a command inside a running container.""" container = self.client.containers.get(container_name) # Execute the command and get output exit_code, output = container.exec_run(command) if exit_code != 0: raise Exception(f"Command failed with exit code {exit_code}") return output.decode("utf-8") # ----------------- DockerContainer Class ----------------- class DockerContainer: def __init__(self, image, name, command=None, detach=True, ports=None, environment=None): self.client = docker.from_env() self.image = image self.name = name self.command = command self.detach = detach self.ports = ports self.environment = environment def run_container(self): try: container = self.client.containers.run( image=self.image, name=self.name, command=self.command, detach=self.detach, ports=self.ports, environment=self.environment ) return container.short_id except docker.errors.APIError as e: return f"Error: {e}" # ----------------- DockerContainer Class ----------------- pprint.pprint(get_containers())
Leave a Comment