工作中进行测试时,需要修改nacos配置,修改完成后再重启对应的docker容器,让配置生效,研究了下,使用docker库可以做到。
如何修改nacos配置可以参见我的另一篇文章,传送门
python3 修改nacos的yaml配置_xugexuge的博客-CSDN博客
pip install docker
- import docker
-
- # 创建 Docker 客户端实例
- client = docker.from_env()
-
- # 查找正在运行的 Docker 容器
- containers = client.containers.list()
-
- for container in containers:
- container_name = container.name # docker的名字
- container_id = container.id # docker的id
- container_status = container.status # docker的状态
-
- """
- 这里可以写你的业务逻辑,比如停止某个id的docker,或者停止某个名字的docker
- """
- container.stop() # 停止docker
- container.start() # 启动docker
- container.restart() # 重启docker
-
- # 关闭 Docker 客户端连接
- client.close()
按以上写法,由于 docker 库只能与本地 Docker 引擎进行交互,需要在docker容器的那台服务器上去执行代码。
如果你想要使用 Python 代码远程重启 Docker 容器,可以借助第三方库 paramiko 或者 fabric 来执行远程命令。
以下是使用 paramiko 远程重启 Docker 容器的示例代码
示例写法如下
- import paramiko
-
- # SSH 连接参数
- ssh_host = 'your_host'
- ssh_port = 22
- ssh_username = 'your_username'
- ssh_password = 'your_password'
-
- # 创建 SSH 客户端
- client = paramiko.SSHClient()
- client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
-
- # 连接到远程主机
- client.connect(hostname=ssh_host, port=ssh_port, username=ssh_username, password=ssh_password)
-
- # 执行远程命令获取容器列表
- command = 'sudo docker ps --format "{{.Names}}"'
- stdin, stdout, stderr = client.exec_command(command)
-
- # 处理命令输出,获取容器名称列表
- container_names = []
- for container_name in stdout.readlines():
- container_names.append(container_name.strip())
-
- # 输出容器名称列表
- print(container_names)
-
- # 执行远程命令
- command = 'sudo docker restart container_name_or_id' # 替换为实际的容器名称或 ID
- stdin, stdout, stderr = client.exec_command(command)
-
- # 输出命令执行结果
- print(stdout.read().decode('utf-8'))
-
- # 关闭 SSH 连接
- client.close()