我的 GitLab CI/CD 管道完全由在我的 Runner 上的 Docker 执行器上运行的容器组成。因此,我假设我打算在这里使用 Trivy 的第二个代码块,其中 Trivy 图像像我的管道中的所有其他作业一样被获取。但是,当我这样做时,我收到以下错误:
$ time trivy --exit-code 0 --cache-dir .trivycache/ --no-progress --format template --template "@/contrib/gitlab.tpl" --output "$CI_PROJECT_DIR/gl-container-scanning-report.json" "$FULL_IMAGE_NAME"
2021-11-18T22:24:38.464Z FATAL scan error: unable to initialize a scanner: unable to initialize a docker scanner: 3 errors occurred:
* unable to inspect the image (registry.gitlab.com/my-repo:main): Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
* unable to initialize Podman client: no podman socket found: stat podman/podman.sock: no such file or directory
* GET https://registry.gitlab.com/v2/my-repo/manifests/main: MANIFEST_UNKNOWN: manifest unknown; map[Tag:main]
Command exited with non-zero status 1
我试过用谷歌搜索这些错误,但没有找到太多。我离 DevOps SME 还差得很远,所以如果我的 GitLab 环境有问题,我不知道它可能是什么……我管道中的所有其他工作(Terraform、Ansible、SonarQube)都可以正常工作。Docker 执行器在 Runner 上运行良好,所以我不确定它为什么无法连接到 Docker。我什至不知道 Podman 是什么,也不知道它是如何应用在这里的。Trivy 的网站上也没有太多文档可以解释我可能错过的其他先决条件。我实际上是在使用他们的代码,所以我对它为什么不起作用感到困惑。任何帮助表示赞赏。