zoukankan      html  css  js  c++  java
  • Docker下的Jenkins执行docker agent导致Got permission denied 报错

        我通过Vmware + Ubuntu + Docker + Jenkins部署了Jenkins环境,同时在Jenkins中新建了一个Pipeline任务,具体脚本如下:
            
        这个脚本主要是执行一个python脚本,在pipeline中我使用了agent docker来部署python环境。
        保存任务,执行(Build Now),结果在执行docker pull python:3.7.5时报错:"Got permission denied while trying to connect to the Docker deamon sockert at unix:///var/run/docker.sock:....."
        如下图:
     
     
    解决:
    这个问题困扰了我半天,尝试了各种方法都行不通。而网上大部分是非Docker环境部署Jenkins的解决方案。
    核心问题其实就是解决jenkins执行docker的权限问题。
        先来解决docker的root权限问题(如果在部署Docker时已经完成此步,则可以直接跳过)
        参考官方文档<Manage Docker as a non-root user>章节:https://docs.docker.com/engine/install/linux-postinstall/
        
    图中红圈部分,大致意思是Docker守护进程绑定的是一个Unix socket而不是TCP端口。默认情况下Unix socket属于rott,其他用户只能通过sudo使用。
    文档后续附上了解决方案:创建一个docker用户组,并把user用户加进该用户组里。
    解决步骤1:创建docker用户组,并把user用户加进该用户组(直接按官方文档顺序执行即可,如果已经新建用户组则跳过此步)
    • 创建docker用户组.
      $ sudo groupadd docker
    • 将当前用户加入到docker用户组.
      $ sudo usermod -aG docker $USER
    • 激活更新用户组信息:
      $ newgrp docker
    • 验证是否可在没有sudo命令的情况下执行docker命令y.
      $ docker run hello-world
    经过以上步骤,问题仍未解决,在执行pipeline时出现同样报错。
    解决步骤2:给docker.sock添加读写权限:
    $ sudo chmod a+rw /var/run/docker.sock
                
    经过以上步骤,任务成功执行,并输出Hello,World!
     
  • 相关阅读:
    把EXE可执行文件等作为资源包含在Delphi编译文件中
    delphi怎么做桌面滚动文字?
    cxGrid控件过滤筛选后如何获更新筛选后的数据集
    我的ecshop二次开发经验分享
    ECSHOP 数据库结构说明 (适用版本v2.7.3)
    cxGrid 怎样才能让不自动换行 WordWrap:=false
    vi notes
    ODI中显示us7ascii字符集的测试
    ODI 11g & 12c中缓慢变化维(SCD)的处理机制
    ODI中的临时接口
  • 原文地址:https://www.cnblogs.com/SunboyL/p/15125989.html
Copyright © 2011-2022 走看看