docker.from_env() 获取docker守护进程时出现 TypeError: load_config() got an unexpected keyword argument 'config_dict' 异常
某天使用python重启docker容器时,出现了一个令人费解的BUG,我的代码为
1 def restart_docker(container_name):
2 # 连接到docker守护进程
3 client = docker.from_env()
4 try:
5 # 获取容器对象
6 container = client.containers.get(container_name)
7 print("正在重启docker...")
8 # 重启容器
9 container.restart()
10 # 等待一段时间让容器重启
11 container.reload()
12 # 此容器8秒没挂就不会挂了,重启大概需要2-3秒,休眠10秒再访问状态,差不多了
13 time.sleep(10)
14 if container.status == "running":
15 print("重启docker成功!")
16 return True
17 else:
18 print("重启docker失败!")
19 return False
20 except:
21 print("重启docker出现错误!")
乍一看没啥问题,并且我在Windows和Linux测试服务器上反复测试了N多遍,在执行这个方法时并没有出现什么问题,当我第一次用于实战时,就出现了让我费解的问题
1 Traceback (most recent call last):
2 File "", line 1, in
3 File "/usr/lib/python3.10/site-packages/docker/client.py", line 81, in from_env
4 **kwargs_from_env(**kwargs))
5 File "/usr/lib/python3.10/site-packages/docker/client.py", line 38, in init
6 self.api = APIClient(*args, **kwargs)
7 File "/usr/lib/python3.10/site-packages/docker/api/client.py", line 110, in init
8 config_dict=self._general_configs
9 TypeError: load_config() got an unexpected keyword argument 'config_dict'
我的第一反应就是,我的包可能出现了不兼容的问题,于是我检查了测试环境的python版本和docker版本,python为3.10.12,docker为6.1.3。
我再查看了出现异常的环境,然并卵,并没有什么不一样,完全一样的系统和环境,怎么会出现问题?百思不得其解,然后我在Github上找到了这篇
https://github.com/docker/docker-py/issues/1916
给出的解决方案两种,一种是删除python,重新安装,但是生产环境,我不能删除python,所以只能从跳过这个方案
第二种解决方法是降级docker版本为2.7,我尝试直接安装最新版的,为docker7.0.0,不行,然后当我将docker降级到2.7的时候,执行代码成功!
但是为了保险,测试完了,我还是将docker换回了6.1.3,并改了一下代码
1 import time
2
3 import subprocess
4 import docker
5
6
7 def restart_docker(container_name):
8 try:
9 # 连接到docker守护进程
10 client = docker.from_env()
11 # 获取容器对象
12 container = client.containers.get(container_name)
13 print("正在重启docker...")
14 # 重启容器
15 container.restart()
16 # 等待一段时间让容器重启
17 container.reload()
18 # 此容器8秒没挂就不会挂了,重启大概需要2-3秒,休眠10秒再访问状态,差不多了
19 time.sleep(10)
20 if container.status == "running":
21 print("重启docker成功!")
22 return True
23 else:
24 print("重启docker失败!")
25 return False
26 except:
27 try:
28 print("重启docker出现错误!进行手动重启!")
29 subprocess.call(["docker", "restart", container_name], timeout=10)
30 print("已手动重启!请检查docker状态!")
31 except:
32 print("手动重启失败!")
简单粗暴,先用着,目前我还在找原因,所以你们可以自己选择符合实际的解决方案
docker.from_env() 获取docker守护进程时出现 TypeError: load_config() got an unexpected keyword argument 'config_dict' 异常的更多相关文章
- 调用mglearn时的报错 TypeError: __init__() got an unexpected keyword argument 'cachedir'
import mglearn的时候发生的报错 原因是调用了joblib包中的memory类,但是cachedir这个参数已经弃用了 查到下面帖子之后改掉cachedir解决问题 https://blo ...
- Docker命令行与守护进程如何交互?
译者按: Docker是典型的C/S架构,其守护进程(daemon)与命令行(CLI)是通过REST API进行交互的. 原文: Understanding how the Docker Daemon ...
- 写守护进程时碰到open函数的参数,没记住
今天写一个最简单的守护进程, 要成为一个守护进程,其实很简单了.主要步骤就4步: 1,创建进程. 2,父进程退出. 3,成为会话的头领进程. 4,将工作目录改成根目录,并把标准输入输出重定向到空设备. ...
- 使用docker inspect获取数据卷信息时返回地址为空
使用 docker inspect 命令查看容器挂载的volume的目录 $ sudo docker inspect --format "{{.Volumes}}" redis-m ...
- docker 学习笔记20:docker守护进程的配置与启动
安装好docker后,需要启动docker守护进程.有多种启动方式. 一.服务的方式 因为docker守护进程被安装成服务.所以,可以通过服务的方式启停docker守护进程,包括查看状态. sudo ...
- Docker容器获取宿主机信息
最近在做产品授权的东西,开始宿主机为Window,程序获取机器硬件信息相对简单些,后来部署时发现各种各样的的环境问题,所有后来改用dokcer部署,docker方式获取宿主机信息时花了些时间,特此记录 ...
- Docker客户端连接Docker Daemon的方式
Docker为C/S架构,服务端为docker daemon,客户端为docker.service,支持本地unix socket域套接字通信与远程socket通信. 默认为本地unix socket ...
- Docker学习笔记 - Docker的基本概念
一.cs架构 Docker客户端:本地或远程 Docker服务端:守护进程Docker Daemon 二.基本概念 Docker镜像:打包阶段,层叠的只读文件系统,引导->root(ubuntu ...
- Docker学习笔记 - Docker客户端和服务端
学习内容: Docker客户端和服务端的通讯方式:client和自定义程序 Docker客户端和服务端的连接方式:socket 演示Docker客户端和服务端之间用remote-api通讯:nc ...
- Unix环境高级编程——守护进程记录总结(从基础到实现)
一.概念及其特征 守护进程是系统中生存期较长的一种进程,常常在系统引导装入时启动,在系统关闭时终止,没有控制终端,在后台运行.守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程 ...
随机推荐
- nginx完全卸载删除
nginx卸载 其实很简单,只需要两步即可完成! 第一步:输入以下指令全局查找nginx相关的文件: sudo find / -name nginx* 第二步:删除查找出来的所有nginx相关文件 s ...
- X-Y问题
什么是X-Y问题 X-Y问题就是有人想解决问题X,他觉得Y可能是解决X的方法但不知道Y怎么做:在我们的工作中,需求方给出的来的是Y,而软件工程师不知道需要解决的X是什么. 我理解的X-Y问题是没有找到 ...
- .NET分布式Orleans - 6 - 事件溯源
基本概念 事件溯源(Event Sourcing)是一种设计模式,它记录并存储了应用程序状态变化的所有事件. 其核心思想是将系统中的每次状态变化都视为一个事件,并将这些事件以时间顺序的方式持久化存储. ...
- DW:优化目标检测训练过程,更全面的正负权重计算 | CVPR 2022
论文提出自适应的label assignment方法DW,打破了以往耦合加权的惯例.根据不同角度的一致性和非一致性指标,动态地为anchor分配独立的pos权重和neg权重,可以更全面地监督训练.此外 ...
- ET介绍——事件机制EventSystem
事件机制EventSystem ECS最重要的特性一是数据跟逻辑分离,二是数据驱动逻辑.什么是数据驱动逻辑呢?不太好理解,我们举个例子 一个moba游戏,英雄都有血条,血条会在人物头上显示,也会在左上 ...
- windows下安装SASS
window下安装ruby与sass(附ruby) webstorm设置sass自动编译,及参数配置 安装sass以及如何在sublime里使用 sublime text 3 配置sass环境 sub ...
- 开源机密计算平台:蓬莱-OpenHarmony
演讲嘉宾 | 杜 东 回顾整理 | 廖 涛 排版校对 | 李萍萍 嘉宾简介 杜东,上海交通大学助理研究员.中国计算机学会CCF会员,ACM会员.研究兴趣为操作系统与体系结构.服务器无感知(Se ...
- std::thread 四:异步(async)
*:如果 std::async 中传递参数 std::lunnch::deferred ,就需要等待调用 get() 或者 wait() 才会执行,并且代码非子线程运行,而是在主线程中执行 #incl ...
- 开发指导—利用组件&插值器动画实现HarmonyOS动效
一. 组件动画 在组件上创建和运行动画的快捷方式.具体用法请参考通用方法. 获取动画对象 通过调用animate方法获得animation对象,animation对象支持动画属性.动画方法和动画事件. ...
- HarmonyOS“一次开发,多端部署“优秀实践——玩机技巧,码上起航
随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间按需调用.互助共享,让用户享受无缝的全场景体验.作为应用开发者,广泛的设备类型也能为应用带来广大的潜 ...