Jenkins服务使用 宿主机的docker、docker-compose (Jenkins 执行sudo命令时出现“sudo: no tty present and no askpass program specified”,以及 docker-compose command not found解决办法)

若要转载本文,请务必声明出处:https://www.cnblogs.com/zhongyuanzhao000/p/11681474.html

原因:

本人最近正在尝试CI/CD,所以就使用了 Jenkins这款强大的CI/CD工具。
由于直接在linux系统安装的Jenkins服务,且在pipeline中需要使用到 docker命令 和 docker-compose 命令,所以我考虑 在Jenkins中直接使用 宿主机中的 docker 和 docker-compose 命令

解决步骤:

一、修改配置,使得在Jenkins中通过 sudo 就可以获得root权限
(问题:Jenkins 执行sudo命令时出现“sudo: no tty present and no askpass program specified”)
       在linux系统中执行命令:vi /etc/sudoers  来修改/etc/sudoers 文件,修改内容如下:
            首先,将   Defaults    requiretty  这一行用#注释掉;
            然后,在文件末尾加上一行:jenkins ALL=(ALL) NOPASSWD: ALL
            接着,通过 wq! 来强制保存并退出;
            最后,需要重启Jenkins,执行命令:/etc/init.d/jenkins restart

二、配置docker命令:
       1、在linux系统执行命令: which docker  
             得到输出:/usr/bin/docker  ,先记录下来。
       2、在Jenkins中,进入  系统管理==>全局工具设置,下拉至 Docker==>新增Docker,填写如下:

 

       3、然后在使用docker命令时,前面一定要加上 sudo,即 sudo docker xxx

 三、配置docker-compose命令:
(问题:Jenkins中报错: docker-compose command not found)
        1、首先检查确认docker-compose的安装目录没有问题,
              >>可以先在 linux系统执行命令:which docker-compose 
              获得docker-compose程序的位置为:/usr/local/bin/docker-compose
              >>然后,在Jenkins中查询 /usr/local/bin/ 目录确认含有docker-compose程序即可

        2、由于报错docker-compose命令找不到,也就是Jenkins无法确认docker-compose命令的位置,
              那么可以直接使用上一步找到的程序的绝对路径来执行该命令,同时必须加上sudo,如下:
              sudo /usr/local/bin/docker-compose  xxx

posted @ 2019-10-15 22:36  <予安>  阅读(3784)  评论(0编辑  收藏  举报