GitLab CI流水线执行docker push --all-tags报unknown flag错误如何解决
问题原因
docker push的--all-tags参数是Docker 20.10.0版本才正式新增的功能,你本地安装的是最新版Docker,版本符合要求因此可以正常执行该命令。- 你GitLab CI配置中使用的
docker:stable镜像对应的Docker版本低于20.10.0,无法识别该新增参数,因此抛出unknown flag: --all-tags的报错。
解决方案
你可以选择任意一种方式修复该问题:
- 升级CI使用的Docker镜像版本
将CI配置中的image: docker:stable替换为更高版本的官方镜像,例如image: docker:20.10或image: docker:latest,即可直接使用--all-tags参数。 - 拆分推送命令(兼容性更好,无需调整CI运行环境)
去掉--all-tags参数,改为分别推送两个标签,修改对应script部分即可:script: - echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" --password-stdin - docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" . - docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:latest" - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" - docker push "$CI_REGISTRY_IMAGE:latest"
内容的提问来源于stack exchange,提问作者Petr Jelínek
相关产品推荐
相关产品推荐

