码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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()

  • 相关阅读:
    37. UE5 RPG创建自定义的Ability Task
    Tomcat源码高级篇(至尊典藏版)
    【总结】助力2022年全国大学生数学建模 — 优化模型总结篇(万字总结)
    搭建ftp服务器并注册账号
    “轻松实现Linux和Windows文件共享,只需几步配置!“
    【c++】杂记
    【C++】函数重载 ① ( 函数重载概念 | 函数重载判断标准 - 参数个数 / 类型 / 顺序 | 返回值不是函数重载判定标准 )
    概率论介绍
    Nginx-反向代理
    RK3568平台开发系列讲解(应用篇)串口应用编程之串口的使用步骤
  • 原文地址:https://blog.csdn.net/xugexuge/article/details/132729834
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号