python3 重启docker方法

一、工作中的问题

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

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

python3 修改nacos的yaml配置_xugexuge的博客-优快云博客

二、安装docker三方库

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值