我正在使用GitLab CICD,在docker-test阶段定义为docker_test: image: docker:stable services: - docker:stable-dind stage: docker-test
.
昨天工作正常,但今天- GitLab管道'docker_test'失败:TypeError:kwargs_from_env()获得了意外的关键字参数'ssl_version'
我在互联网上发现,这可能是一个升级到7.0.0 https://docker-py.readthedocs.io/en/stable/change-log.html
这里有人建议(对于不同的设置)降级到prev 6.3.1
搜索后-不知道如何做到这一点。也许有其他的解决方案?
4条答案
按热度按时间vddsk6oq1#
总结docker-py的讨论:
Docker 1在v7.0.0中做了一个change,它破坏了用Python编写的Docker Compose v1(
pip install docker-compose
可作为docker-compose
使用)。它已被弃用,并被Go中实现的Docker Compose v2取代,后者在OOB中作为docker compose
(子命令)。永久修复:切换到Docker Compose v2(无需额外安装,阅读migration docs以修复兼容性问题)。
临时修复:使用
pip install docker==6.1.3
将Docker 1降级到与Docker Compose(v1)一起使用的版本。1:Docker的python Package 器:
docker-py
;不是用Go编写的真实的docker
可执行文件。注意:有一个提供向后兼容性的请求-不确定是否会被接受。
图片来源:Tim Panohos的answer。
5q4ezhmt2#
在Git上找到这篇文章:https://github.com/docker/docker-py/issues/3194#issuecomment-1848950456
我通过恢复utils.py中的建议更改来使其工作,即sudo nano ./usr/local/lib/python3.9/dist-packages/docker/utils/utils.py
查找结果:def kwargs_from_env(environment=None):(参见文件docker/utils/utils.py第344行)
并添加:def kwargs_from_env(environment=None,ssl_version=None)
然而,我认为有一个原因,为什么它的贬值,可能是由于encrytions已经演变-所以我会尝试让你的项目运行,然后恢复回来.?
vd2z7a6w3#
谢谢大家的好主意。这是我们解决问题的方法:
由于我们不想降级到6.1.3,我们将
docker-compose
替换为docker compose
cmd,但由于没有支持的参数'-f file. yml',因此无法构建。很明显,在GitLab CI/CD中,我们使用的是镜像“docker:latest”,它似乎是3年前构建的,它支持docker客户端18.smth
最后,我们将图像切换到
image: docker:20.10.24 services: - docker:20.10.24-dind
,我们将其理解为真实的最新稳定版本。清理了一些以前的兼容性黑客,它工作得很好。
szqfcxe24#
我在升级到Ubuntu 20.04并从python2.7切换到python3.8后得到了这个错误。
字符串