• python3 重启docker方法


    一、工作中的问题

    工作中进行测试时,需要修改nacos配置,修改完成后再重启对应的docker容器,让配置生效,研究了下,使用docker库可以做到。

    如何修改nacos配置可以参见我的另一篇文章,传送门 

    python3 修改nacos的yaml配置_xugexuge的博客-CSDN博客

    二、安装docker三方库

    pip install docker

    三、代码如下

    1. import docker
    2. # 创建 Docker 客户端实例
    3. client = docker.from_env()
    4. # 查找正在运行的 Docker 容器
    5. containers = client.containers.list()
    6. for container in containers:
    7. container_name = container.name # docker的名字
    8. container_id = container.id # docker的id
    9. container_status = container.status # docker的状态
    10. """
    11. 这里可以写你的业务逻辑,比如停止某个id的docker,或者停止某个名字的docker
    12. """
    13. container.stop() # 停止docker
    14. container.start() # 启动docker
    15. container.restart() # 重启docker
    16. # 关闭 Docker 客户端连接
    17. client.close()

    四、注意点

    按以上写法,由于 docker 库只能与本地 Docker 引擎进行交互,需要在docker容器的那台服务器上去执行代码

    如果你想要使用 Python 代码远程重启 Docker 容器,可以借助第三方库 paramiko 或者 fabric 来执行远程命令。
    以下是使用 paramiko 远程重启 Docker 容器的示例代码

    示例写法如下

    1. import paramiko
    2. # SSH 连接参数
    3. ssh_host = 'your_host'
    4. ssh_port = 22
    5. ssh_username = 'your_username'
    6. ssh_password = 'your_password'
    7. # 创建 SSH 客户端
    8. client = paramiko.SSHClient()
    9. client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    10. # 连接到远程主机
    11. client.connect(hostname=ssh_host, port=ssh_port, username=ssh_username, password=ssh_password)
    12. # 执行远程命令获取容器列表
    13. command = 'sudo docker ps --format "{{.Names}}"'
    14. stdin, stdout, stderr = client.exec_command(command)
    15. # 处理命令输出,获取容器名称列表
    16. container_names = []
    17. for container_name in stdout.readlines():
    18. container_names.append(container_name.strip())
    19. # 输出容器名称列表
    20. print(container_names)
    21. # 执行远程命令
    22. command = 'sudo docker restart container_name_or_id' # 替换为实际的容器名称或 ID
    23. stdin, stdout, stderr = client.exec_command(command)
    24. # 输出命令执行结果
    25. print(stdout.read().decode('utf-8'))
    26. # 关闭 SSH 连接
    27. client.close()

  • 相关阅读:
    Power BI 矩阵总计放表第一列
    【JavaScript面试】map()方法
    保姆级教程:个人深度学习工作站配置指南
    八核智能视频分析边缘计算盒子,4.8T+24路1080P视频解码
    Redis缓存详解(黑马-未完结)
    FusionAD:用于自动驾驶预测和规划任务的多模态融合
    springboot 发布tomcat(war包)
    JVM 内存溢出 java heap space
    独立站优化这一点,转化率提升7%
    C# 判断系统是32位还是64位
  • 原文地址:https://blog.csdn.net/xugexuge/article/details/132729834