You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins容器内Trivy无法访问本地Docker镜像的问题咨询

解决Jenkins容器内Trivy访问宿主机本地Docker镜像的问题

下面是几种可行的解决办法:

1. 共享宿主机Docker套接字给Jenkins容器

让Jenkins容器直接使用宿主机的Docker引擎,这样Trivy就能通过Docker引擎访问宿主机上的本地镜像,这是最常用的方案。

  • 启动Jenkins容器时添加挂载参数(如果容器已运行,可先停止再重新启动):
    docker run -d \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v jenkins_home:/var/jenkins_home \
      jenkins/jenkins:lts
    
  • 权限处理:默认Jenkins容器内用户可能没有访问Docker套接字的权限,可在容器内执行chmod 666 /var/run/docker.sock;若追求更安全的方式,可将Jenkins用户加入宿主机的docker用户组,避免过度开放权限

2. 手动导入镜像到Jenkins容器

如果不想共享Docker套接字,可以把宿主机的本地镜像导出后导入Jenkins容器:

  • 宿主机上导出镜像:
    docker save -o test-image.tar test:test
    
  • 将tar文件复制到Jenkins容器内(替换<jenkins-container-id>为你的Jenkins容器ID):
    docker cp test-image.tar <jenkins-container-id>:/tmp/
    
  • 进入Jenkins容器导入镜像:
    docker exec -it <jenkins-container-id> bash
    docker load -i /tmp/test-image.tar
    
  • 完成后就能在CI流水线里用Trivy扫描test:test镜像了

3. 搭建本地镜像仓库中转

搭建一个本地Docker镜像仓库,把宿主机的镜像推送到仓库,再让Jenkins容器从仓库拉取镜像扫描:

  • 启动本地镜像仓库:
    docker run -d -p 5000:5000 --name registry registry:2
    
  • 宿主机给镜像打标签并推送到本地仓库:
    docker tag test:test localhost:5000/test:test
    docker push localhost:5000/test:test
    
  • Jenkins容器内拉取镜像并扫描:
    docker pull localhost:5000/test:test
    trivy image localhost:5000/test:test
    

内容的提问来源于stack exchange,提问作者Lev Meshorer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:45:58