Untitled
unknown
python
9 months ago
3.3 kB
5
Indexable
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())
Editor is loading...
Leave a Comment