记一次ubuntu中docker安装jenkins花费的无数时间

首先安装docker没什么说的

直接执行jenkins

docker run -d --name jenkins -p 80:8080 -v /home/jenkins_home1:/home/jenkins_home1

启动后会让你寻找初始密码,这是取/var/jenkins_home/secrets/中寻找一个叫initialAdminPassword的文件。打开后有你的初始密码输入。正常创建

然后创建流水线

写入流水线shell

#!groovy
pipeline {
    agent any
    stages {

        stage('测试') {
            steps {
                echo "docker images"
                sh "docker images"
            }
        }
    }
}

然后保存执行。发现报错!

经调查发现这个写法是错误的。具体调查过程有点忘了

这个是因为没有挂载docker.sork到jenkins中

于是有了再一次的调查

docker run -d -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v $PWD:/var/jenkins_home -p 8080:8080 jenkins/jenkins:lts


jenkins/jenkins是我的镜像名称,lts是我的tag名称

启动后国际惯例写入初始密码

这时发现我的虚拟机中没有这个查看密码的文件了。卧槽?慌了

经一番调查发现。这个文件竟然在docker容器中的这个路径下,进入docker容器拿到这个文件的密码

配置流水线然后执行发现报错

+ docker images
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.37/images/json: dial unix /var/run/docker.sock: connect: permission denied

我日?竟然告诉我没有权限

那我日常想到直接sudo执行

进入docker容器中

docker exec -it containerID /bin/bash   进入容器交互  containerID:镜像ID

执行sudo docker images

什么?为什么告诉我sudo不可用?这里没有详细调查

然后我就想,直接root进容器看看好使不

docker exec -it -u root containerID /bin/bash   进入容器交互  containerID:镜像ID

我的天,好使了

那我就想如何能让jenkins执行的时候拥有root权限呢?

网上查到把jenkins这个用户加入到docker用户组中。然后重启(我没有尝试)

我使用的是直接用root方法启动镜像

docker run -d -u root -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v $PWD:/var/jenkins_home -p 8080:8080 jenkins/jenkins:lts


-u root          
#以root的身份去运行镜像(避免在容器中调用Docker命令没有权限)
#最好使用docker用户去运行
-v /usr/bin/docker:/usr/bin/docker
#将宿主机的docker命令挂载到容器中
#可以使用which docker命令查看具体位置
#或者把挂载的参数改为: -v $(which docker):/usr/bin/docker
-v /var/run/docker.sock:/var/run/docker.sock
#容器中的进程可以通过它与Docker守护进程进行通信



-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
上面这句话是centos中安装jenkins时需要挂载的

这种方法是可以的。执行后结果截图如下

很开心。那么接下来试试登陆阿里云docker拉取一个镜像下来看看

创建流水线工作

#!groovy
pipeline {
    agent any
    stages {

        stage('登陆阿里云') {
            steps {
                echo "docker login --username=rexstyle --password=1qazXSW@ registry.cn-qingdao.aliyuncs.com"
                sh "docker login --username=rexstyle --password=1qazXSW@ registry.cn-qingdao.aliyuncs.com"
            }
        }
        stage('拉取镜像') {
            steps {
                echo "docker pull 你的阿里云镜像"
                sh "docker pull 你的阿里云镜像"
            }
        }
    }
}

成功。

远程调用需要配置

如果没有这个token进添加一个

结束!

#!groovy
pipeline {
    agent any
   environment {
        BUILD_NAME = "tigzx.yuantongstorage.efs"
        PROJECT_FILE = "/mnt/hgfs/svn/QingHaiYuanTong/trunk/Tigzx/srcV1.0/Tigzx.Services/Tigzx.Services.Server.EFS/bin/Release/netcoreapp2.2/publish"
        USER_PWD = "rex:11e64ae4edf86fb9744ceecb7ba112f2bb"
        JENKINS_JOBNAME = "yuantongstorageefs"
        JENKINS_JOBTOKEN = "rex"
        SERVICE_JENKINSIP = "192.168.60.10:8080"
        ALIYUN_DOCKER = "registry.cn-hangzhou.aliyuncs.com/platform_service"
    }
    stages{
        stage('打包项目') {
            steps {
                echo 'docker build -t ${BUILD_NAME} ${PROJECT_FILE}'
                sh 'docker build -t ${BUILD_NAME} ${PROJECT_FILE}'
            }
        }
        stage('打TAG') {
            steps {
                echo 'docker tag ${BUILD_NAME} ${ALIYUN_DOCKER}/${BUILD_NAME}'
                sh 'docker tag ${BUILD_NAME} ${ALIYUN_DOCKER}/${BUILD_NAME}'
            }
        }
        stage('上传项目') {
            steps {
                echo 'docker push ${ALIYUN_DOCKER}/${BUILD_NAME}'
                sh 'docker push ${ALIYUN_DOCKER}/${BUILD_NAME}'
            }
        }
        stage('执行远程发布') {
            steps {
                echo 'curl -X POST http://${USER_PWD}@${SERVICE_JENKINSIP}/job/${JENKINS_JOBNAME}/build?token=${JENKINS_JOBTOKEN}'
                sh 'curl -X POST http://${USER_PWD}@${SERVICE_JENKINSIP}/job/${JENKINS_JOBNAME}/build?token=${JENKINS_JOBTOKEN}'
            }
        }
    }
}

——————————————————————————————————

作者:Henny_CHN

转载请标明出处,原文地址:  

https://blog.csdn.net/a1234012340a/article/details/97705997

如果感觉本文对您有帮助,请留下您的赞,您的支持是我坚持写作最大的动力,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值