2021-07-15


```html

```html
def updata():
    containter1 = client1.containers
    containter2 = client2.containers
    with open("/home/hadoop/mpi_knn/ping.txt", "w") as fp:
        fp.write("")
    for i in range(len(containter1.list())):
        name = containter1.list()[i].attrs["Name"][1:]
        if name != "consul":
            containerLL = containter1.get(name)
            with open("/home/hadoop/mpi_knn/ping.txt", "a") as fp:
                ip = containerLL.attrs['NetworkSettings']['Networks']["cc"]["IPAddress"]
                fp.write(ip)
                fp.write("\n")
    for i in range(len(containter2.list())):
        name = containter2.list()[i].attrs["Name"][1:]
        if name != "consul":
            containerLY = containter2.get(name)
            with open("/home/hadoop/mpi_knn/ping.txt", "a") as fp:
                ip = containerLY.attrs['NetworkSettings']['Networks']["cc"]["IPAddress"]
                fp.write(ip)
                fp.write("\n")
def create():
    create = tkinter.Toplevel()
    frame_main = tkinter.Frame(create, bg="whitesmoke")
    frame_main.propagate(False)
    frame_main.pack(expand=tkinter.YES, fill=tkinter.BOTH)
    create.title('Creating a virtual machine')
    create.geometry('800x600')  # 窗体大小
    global memory, CPU_number, docker_name, docker_place

    number3 = tkinter.StringVar()
    memory = ttk.Combobox(create, width=12, textvariable=number3)
    memory['values'] = ('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16')
    memory.place(width=250, x=500, y=20, height=20)
    memory.current(0)
    memory_label = tkinter.Label(create, text='Please enter the memory size(max=16)',bg='whitesmoke')
    memory_label.place(x=20, y=20, width=400, height=20)

    number1 = tkinter.StringVar()
    CPU_number = ttk.Combobox(create, width=12, textvariable=number1)
    CPU_number['values'] = ('1', '2', '3', '4', '5', '6', '7', '8')
    CPU_number.place(width=250, x=500, y=70, height=20)
    CPU_number.current(0)
    CPU_number_label = tkinter.Label(create, text='Number of CPU cores(max=8)',bg='whitesmoke')
    CPU_number_label.place(x=20, y=70, width=400, height=20)

    docker_name = tkinter.Entry(create)
    docker_name.place(width=250, x=500, y=120, height=20)
    docker_name_label = tkinter.Label(create, text='Please enter a virtual machine name', width=80,bg='whitesmoke')
    docker_name_label.place(x=20, y=120, width=400, height=20)

    number2 = tkinter.StringVar()
    docker_place = ttk.Combobox(create, width=12, textvariable=number2)
    docker_place['values'] = ('0', '1')
    docker_place.place(width=250, x=500, y=170, height=20)
    docker_place.current(0)
    docker_place_label = tkinter.Label(create, text='select a machine(LL=0,LY=1)',bg='whitesmoke')
    docker_place_label.place(x=20, y=170, width=400, height=20)

    button2 = tkinter.Button(create,command=createDocker, text='Creating a virtual machine', font=('Arial', 12), width=50, height=2)
    button2.place(x=170, y=300)
def createDocker():
    position = docker_place.get()
    if position == "0":
        client = client1
        CPU_number_limit = cpu_max[0]
    elif position == '1':
        client = client2
        CPU_number_limit = cpu_max[1]
    if position != '0' and position != '1':
        tkinter.messagebox.showwarning("show","Please select the correct host")
        return

    name = docker_name.get()

    memory_number = int(eval(memory.get()))
    if memory_number > 16:
        tkinter.messagebox.showwarning("show","Out of memory")
        return
    mem_limit = memory.get() + 'g'

    number = int(eval(CPU_number.get()))
    if number > CPU_number_limit:
        tkinter.messagebox.showwarning("show","The CPU is insufficient")
        return
    CPU_list = []
    CPU_str = ''
    while len(CPU_list) < number:
        i = random.randint(0, 7)
        if i not in CPU_list:
            CPU_list.append(i)
            CPU_str += str(i)
            CPU_str += ','
    CPU_str = CPU_str[:-1]
    client.containers.run(image=docker_image, name=name, mem_limit=mem_limit, tty=True, detach=True, stdin_open=True, network='cc', cpuset_cpus=CPU_str, volumes=volumes)
    tkinter.messagebox.showwarning("show","Docker was successfully created")
    updata()
    client1.close()
    client2.close()
def delete():
    delete = tkinter.Toplevel()
    frame_main = tkinter.Frame(delete, bg="whitesmoke")
    frame_main.propagate(False)
    frame_main.pack(expand=tkinter.YES, fill=tkinter.BOTH)
    delete.title('Delete virtual machine')
    delete.geometry('800x600')  # 窗体大小
    global name1 , docker_place1

    number1 = tkinter.StringVar()
    name1 = ttk.Combobox(delete, width=12, textvariable=number1)
    containers1 = client1.containers.list(all=True)
    containers2 = client2.containers.list(all=True)
    list_temp = []
    for container in containers1:
        list_temp.append(container.name)
    for container in containers2:
        list_temp.append(container.name)
    name1['values'] = tuple(list_temp)
    name1.place(width=250, x=500, y=70, height=20)
    name1.current(0)
    name_label = tkinter.Label(delete, text='Please enter the name of the virtual machine you want to remove', bg='whitesmoke')
    name_label.place(x=20, y=70, width=400, height=20)

    number2 = tkinter.StringVar()
    docker_place1 = ttk.Combobox(delete, width=12, textvariable=number2)
    docker_place1['values'] = ('0', '1')
    docker_place1.place(width=250, x=500, y=170, height=20)
    docker_place1.current(0)
    docker_place_label = tkinter.Label(delete, text='select a machine(LL=0,LY=1)', bg='whitesmoke')
    docker_place_label.place(x=20, y=170, width=400, height=20)

    button1 = tkinter.Button(delete,command=deleteDocker, text='Delete virtual machine', font=('Arial', 12), width=50,height=2)
    button1.place(x=170, y=300)
def deleteDocker():
    position = docker_place1.get()
    name = name1.get()
    if position == "0":
        client = client1
    elif position == '1':
        client = client2
    if position != '0' and position != '1':
        tkinter.messagebox.showwarning("show","Please select the correct host")
        return
    name_list = []
    containers = client.containers.list(all=True)
    for container in containers:
        name_list.append(container.name)
    if name not in name_list:
        tkinter.messagebox.showwarning("show","The virtual machine to be deleted does not exist")
        return
    container = client.containers.get(name)
    container.stop()
    container.remove()
    updata()
    tkinter.messagebox.showwarning("show","The virtual machine was deleted successfully")
   
   

def start():
    create_three = tkinter.Toplevel()
    frame_main = tkinter.Frame(create_three, bg="whitesmoke")
    frame_main.propagate(False)
    frame_main.pack(expand=tkinter.YES, fill=tkinter.BOTH)
    create_three.title('Start the virtual machine')
    create_three.geometry('800x600')  # 窗体大小
    global name2, docker_place2

    number2 = tkinter.StringVar()
    name2 = ttk.Combobox(create_three, width=12, textvariable=number2)
    containers1 = client1.containers.list(all=True)
    containers2 = client2.containers.list(all=True)
    containers1_run = client1.containers.list()
    containers2_run = client2.containers.list()
    list_temp = []
    for container in containers1:
        if container not in containers1_run:
            list_temp.append(container.name)
    for container in containers2:
        if container not in containers2_run:
            list_temp.append(container.name)
    if len(list_temp) == 0:
        list_temp.append('All Docker containers are already open')

    name2['values'] = tuple(list_temp)
    name2.place(width=250, x=500, y=70, height=20)
    name2.current(0)
    name2_label = tkinter.Label(create_three, text='Please enter the name of the virtual machine you want to turn on', bg='whitesmoke')
    name2_label.place(x=20, y=70, width=400, height=20)

    number1 = tkinter.StringVar()
    docker_place2 = ttk.Combobox(create_three, width=12, textvariable=number1)
    docker_place2['values'] = ('0', '1')
    docker_place2.place(width=250, x=500, y=170, height=20)
    docker_place2.current(0)
    docker_place2_label1 = tkinter.Label(create_three, text='select a machine(LL=0,LY=1)', bg='whitesmoke')
    docker_place2_label1.place(x=20, y=170, width=300, height=20)

    button1 = tkinter.Button(create_three, text='Start the virtual machine', command=startDocker, font=('Arial', 12), width=50, height=2)
    button1.place(x=170, y=300)
def startDocker():
    position = docker_place2.get()
    name = name2.get()
    if position == "0":
        client = client1
    elif position == '1':
        client = client2
    if position != '0' and position != '1':
        tkinter.messagebox.showwarning("show", 'Please select the correct host')
        return
    name_list = []
    containers = client.containers.list(all=True)
    for container in containers:
        name_list.append(container.name)
    if name not in name_list:
        tkinter.messagebox.showwarning("show", 'The virtual machine to be started does not exist')
        return
    container = client.containers.get(name)
    container.start()
    updata()
    tkinter.messagebox.showwarning("show", 'Virtual machine started successfully')
def stop():
    create_four = tkinter.Toplevel()
    frame_main = tkinter.Frame(create_four, bg="whitesmoke")
    frame_main.propagate(False)
    frame_main.pack(expand=tkinter.YES, fill=tkinter.BOTH)
    create_four.title('Stop the virtual machine')
    create_four.geometry('800x600')  # 窗体大小
    global name3, docker_place3

    number1 = tkinter.StringVar()
    name3 = ttk.Combobox(create_four, width=12, textvariable=number1)
    containers1 = client1.containers.list()
    containers2 = client2.containers.list()
    list_temp = []
    for container in containers1:
        list_temp.append(container.name)
    for container in containers2:
        list_temp.append(container.name)
    name3['values'] = tuple(list_temp)
    name3.place(width=250, x=500, y=70, height=20)
    name3.current(0)
    name3_label = tkinter.Label(create_four, text='Please enter the name of the virtual machine to stop', bg='whitesmoke')
    name3_label.place(x=20, y=70, width=400, height=20)

    number2 = tkinter.StringVar()
    docker_place3 = ttk.Combobox(create_four, width=12, textvariable=number2)
    docker_place3['values'] = ('0', '1')
    docker_place3.place(width=250, x=500, y=170, height=20)
    docker_place3.current(0)
    docker_place_label3 = tkinter.Label(create_four, text='Please select the correct host', bg='whitesmoke')
    docker_place_label3.place(x=20, y=170, width=400, height=20)

    button3 = tkinter.Button(create_four, text='Stop the virtual machine', command=stopDocker, font=('Arial', 12), width=50, height=2)
    button3.place(x=170, y=300)
def stopDocker():
    position = docker_place3.get()
    name = name3.get()
    if position == "0":
        client = client1
    elif position == '1':
        client = client2
    if position != '0' and position != '1':
        tkinter.messagebox.showwarning("show", '"Please select the correct host"')
        return
    name_list = []
    containers = client.containers.list()
    for container in containers:
        name_list.append(container.name)
    if name not in name_list:
        tkinter.messagebox.showwarning("show", 'The virtual machine to stop does not exist')
        return
    container = client.containers.get(name)
    container.stop()
    updata()
    tkinter.messagebox.showwarning("show", 'The virtual machine was successfully stopped')
def show_state():
    create_Five = tkinter.Toplevel()
    frame_main = tkinter.Frame(create_Five, bg="whitesmoke")
    frame_main.propagate(False)
    frame_main.pack(expand=tkinter.YES, fill=tkinter.BOTH)
    create_Five.title('state')
    create_Five.geometry('800x600')  # 窗体大小
    os.system("docker stats --no-stream >x")
    command = "docker stats --no-stream"
    stdin, stdout, stderr = ssh.exec_command(command)
    for i in stdout.readlines():
        with open("x", "a") as fp:
            fp.write(i)
    with open("x","r") as fp:
        state=fp.read()
    stae_label=ttk.Label(frame_main,text=state,font=tkFont.Font(family="微软雅黑", size=12, weight=tkFont.NORMAL))
    stae_label.pack()
def main():
    root = tkinter.Tk()
    root.title('Docker virtual management')  # 标题
    root.geometry('1200x800')  #窗体大小
    root.title("Docker virtual management")  # 窗体标题
    frame_top = tkinter.Frame(root, bg="whitesmoke")               # create top frame
    frame_top.pack(fill=tkinter.X)
    tkinter.Label(frame_top ,text="Cloud Computing Curriculum Design (Li Li & Li Yi)", bg="white", height=2, font=tkFont.Font(family="微软雅黑", size=20, weight=tkFont.NORMAL)).pack()
    frame_main = tkinter.Frame(root, bg="whitesmoke")          #craete main frame
    frame_main.propagate(False)
    frame_main.pack(expand=tkinter.YES, fill=tkinter.BOTH)
    frame_maintop = tkinter.Frame(frame_main, bg="white", height=80)   # the top of main frame
    frame_maintop.pack(fill=tkinter.X, padx=20, pady=10)
    tkinter.Label(frame_maintop, text="Docker virtual management", bg="white", fg='black', height=2, font=tkFont.Font(family="微软雅黑", size=20, weight=tkFont.BOLD)).pack(padx=200)

    frame_main=tkinter.Frame(frame_main, width=1200, bg="white")
    frame_main.pack(side=tkinter.LEFT, fill=tkinter.Y, padx=30)
    tkinter.Label(frame_main, text="Docker function", bg="white", fg='black', height=2, font=tkFont.Font(family="微软雅黑", size=20,weight=tkFont.BOLD)).pack(padx=180, pady=20)
    frame_main.propagate(False)
    button1 = tkinter.Button(frame_main,command=create, text='Creating a virtual machine',  font=tkFont.Font(family="微软雅黑", size=12), width=80, height=2, bg='white').pack(padx=10,pady=5)
    button2 = tkinter.Button(frame_main,command=delete, text='Delete virtual machine',  font=tkFont.Font(family="微软雅黑", size=12), width=80, height=2,bg='white').pack(padx=10, pady=5)
    button3 = tkinter.Button(frame_main,command=start,  text='Start the virtual machine', font=tkFont.Font(family="微软雅黑", size=12), width=80, height=2, bg='white').pack(padx=10,pady=5)
    button4 = tkinter.Button(frame_main,command=stop,   text='Stop the virtual machine', font=tkFont.Font(family="微软雅黑", size=12), width=80, height=2, bg='white').pack(padx=10,pady=5)
    button5 = tkinter.Button(frame_main, command=show_state,text='View the status of the virtual machine', font=tkFont.Font(family="微软雅黑", size=12), width=80, height=2,bg='white').pack(padx=10, pady=5)
    root.mainloop()
    ssh.close()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值