• 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!
     
  • 相关阅读:
    ArcgisServerJS固件位置
    PrintTemplate说明
    地图打印仅地图4X
    地图打印4X
    IIS下设置跨域访问问题--Access-Control-Allow-Origin 站点跨域请求的问题
    javascript的 热点图怎么写
    Flex 加载shp
    Flex 加载dwg
    Flex 加载tiff
    Flex 加载 wmf,svg
  • 原文地址:https://www.cnblogs.com/SunboyL/p/15125989.html
Copyright © 2020-2023  润新知