利用python远程连接管理虚拟机中的docker容器
import tkinter as tk
from PIL import Image, ImageTk
import docker
import prettytable as pt
client2 = docker.from_env()
client = docker.DockerClient(base_url='tcp://192.168.43.41:2375')
image_name1 = "22fd781767b5"
image_name2 = "0081acdef01d"
net_work = 'multihost4'
import os
import threading
def isConnect():
container_ls1 = client.containers.list()
container_ls2 = client2.containers.list()
lost_nodes = []
for container in container_ls1:
result = container.exec_run('ping 192.168.43.41 -c 1')
if 'Unreachable' in result:
lost_nodes.append(container.name)
for container in container_ls2:
result = container.exec_run('ping 192.168.43.237 -c 1')
if 'Unreachable' in result:
lost_nodes.append(container.name)
return lost_nodes
def run():
global timer
lost_nodes = isConnect()
if len(lost_nodes)!=0:
print('有'+str(len(lost_nodes))+'个结点断网')
else:
print('容器网络状态正常')
ping = os.popen('ping 192.168.43.237 -c 1').read()
if 'Unreachable' in ping:
print('网络错误,请检查主机的网络连接')
else:
print('心跳检测:主机之间的网络连接正常')
timer = threading.Timer(5, run)
timer.start()
timer = threading.Timer(2,run)
timer.start()
class App:
def __init__(self, master):
self.prename = 'node'
image = Image.open("back4.png")
pyt = ImageTk.PhotoImage(image)
label = tk.Label(master, image=pyt)
label.image = pyt
label.pack()
theLabel = tk.Label(master, text="1111111111111111111111111111111111111", font=('微软雅黑', 16),bg='black',width='60')
theLabel.pack(side='top')
frame = tk.Frame(master,bg='black',width='60')
frame.pack()
self.entry1 = tk.Entry(frame, font=('微软雅黑', 16),width='16',fg='#22C9C9')
self.entry1.pack(side='left',fill='y',padx=60)
self.entry1.insert(16, "容器个数")
self.hi_there = tk.Button(frame, text='立即创建',bg='#00BFFF',fg='white',command=self.create_docker, font=('微软雅黑', 16),width='16')
self.hi_there.pack(side='right&