MacOS~jenkins里解决docker执行权限问题
一 全局配置项设置
- 需要添加全局变量项,例如名称docker,路径/usr/local
- 添加一个jenkinsfile文件,用于运行docker命令
pipeline {
agent any
tools{
gradle "gradle"
}
stages {
stage('init') {
steps {
script{
def dockerPath = tool 'docker' //全局配置里的docker
env.PATH = "${dockerPath}/bin:${env.PATH}" //添加了系统环境变量上
}
}
}
stage('Build') {
steps {
script{
sh "docker --version"
}
}
}
}
}
注意:我们需要把docker的路径添加到env环境变量里才可以使用docker命令,这个我试了很多次。
二 添加jenkins用户到docker组
上面的操作完成之后,你的docker --version
是可以打印了,但还不能执行docker命令,还需要你把jenkins用户添加到docker
用户组里。
没有添加用户组会有这个错误提示
docker run --rm -v /Users/Shared/Jenkins/Home/workspace/helloJava:/src --user root --privileged=true alpine:3.6 sh -c 'cp /src/src/main/docker/Dockerfile /src/build/libs'
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
当前用户添加到docker组
sudo gpasswd -a ${USER} docker
#或者将当前用户直接加到文件中
sudo echo "docker:x:994:${USER}" >> /etc/group
#查看docker用户组成员
cat /etc/group |grep docker
#重新启动docker服务
sudo systemctl restart docker
# 赋予权限
sudo chmod a+rw /var/run/docker.sock
修改jenkins用户的拥有者
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
sudo vim /Library/LaunchDaemons/org.jenkins-ci.plist
sudo chown -R lind.zhang:docker /Users/Shared/Jenkins/
sudo chown -R lind.zhang:docker /var/log/jenkins/
启动jenkins
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
大功告成
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ docker run alpine:3.6 /bin/echo hello
hello
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
MacOS~jenkins里解决docker执行权限问题的更多相关文章
- Ubuntu、CentOS 解决docker命令权限问题(sudo)
#创建docker组 weiyj@ubuntu18:~$ sudo groupadd docker groupadd: group 'docker' already exists #将当前用户加入do ...
- 在 docker 安装 jenkins (解决无法访问jenkins的错误)
前提:安装好docker. 拉取Jenkins镜像: python docker pull jenkins 遇到错误:Docker:TLS handshake timeout错误 原因:国外,网速慢, ...
- Docker 安装 Jenkins , 并解决初始安装插件失败
安装 Jenkins 后,初始化下载插件总是失败,导致安装不成功,重试好几次都是卡在安装插件那. 这里记录下 Docker 下怎么安装 Jenkins ,并解决初始安装插件失败问题. 安装插件失败,其 ...
- Docker: Jenkins里的pipeline编写基本技巧
Jenkins里,先新建一个pipeline项目 Pipeline Syntax 在Sample Step里选择需要的插件,如果不存在,就去系统管理,插件管理里,进行安装. 如果源码管理工具用的是gi ...
- 使用jenkins来跑docker image的惨痛经历
记录一下我使用jenkins来跑docker container的艰辛路程吧,是照着jenkins官网的[文档](https://jenkins.io/doc/tutorials/build-a-ja ...
- jenkins里跑selenium webdriver,Chrome浏览器不能打开&&unknown error: unable to discover open pages
在windows的cmd里面执行 “python test.py”,毫无问题,浏览器正常打开,测试结果也正常. 问题: 但如果是在jenkins里,选择 “execute windows batch ...
- apache禁止访问文件或目录执行权限、禁止运行脚本PHP文件的设置方法
<Directory "要去掉PHP执行权限的目录路径,例如:D:/piaoyun.cc/upload"> ErrorDocument 404 /404/404.h ...
- jenkins+git实现docker持续部署
jenkins所做的事情很简单,就拿我现在的情况来说吧,(1).每次开发完成,我都会push到我的远程仓库:(2).我再将我push到远程仓库的代码pull到我的测试服务器上:(3).在测试服务器上, ...
- 非系统服务如何随系统启动时自动启动(rc.local加了可执行权限,仍然没有生效)
我们知道,例如我们直接yum 安装的httpd mysqld之类的服务可以直接systemctl enable mysql使服务自动启动,但是,我们应该关心的是但是的那部分 例如nginx,我的话,我 ...
随机推荐
- .net core控制台程序中使用原生依赖注入
如果要在程序中使用DbContext,则需要先在Nuget中安装Microsoft.EntityFrameworkCore.SqlServer using ConsoleApp1.EntityFram ...
- 一个proc预编译代码时coredump的问题分析
最近有同事在搞编译环境迁移,碰上一个问题让我帮他看一下. 他建了一个新目录,然后把现在的代码拷过去,编译的时候发现有一个文件编译不了一执行就出现core,不知道啥情况. 我进到他的编译环境 ...
- selenium的安装、报错和解决
selenium是的作用是模拟点击浏览器上的按钮,配合一个无头浏览器就可以快速解决一些前端需要加解密的功能. 第一步pip install selenium安装的第一步就是用pip把模块下载回来. ...
- 安卓JNI精细化讲解,让你彻底了解JNI(二):用法解析
目录 用法解析 ├── 1.JNI函数 │ ├── 1.1.extern "C" │ ├── 1.2.JNIEXPORT.JNICALL │ ├── 1.3.函数名 │ ├── 1 ...
- Centos7.x部署SeaFile私有网盘
1.安装依赖环境 yum -y install wge gcc-c++ .......... 2.关闭Firewalld防火墙和SElinux systemctl stop firewalld sys ...
- Spring Boot启动提示:org.apache.catalina.LifecycleException: A child container failed during start
一.问题回顾 最近在做一个新项目,从git上下载导入idea后,启动项目,但是报了如下错误: java.util.concurrent.ExecutionException: org.apache.c ...
- Prometheus学习系列(七)之Prometheus PromQL说明
前言 本文来自Prometheus官网手册1.2.3 和 Prometheus简介1.2.3 PromQL操作符 一.二元操作符 Prometheus的查询语言支持基本的逻辑运算和算术运算.对于两个瞬 ...
- 获取主线程Thread.currentThread()
package seday08.thread; /** * @author xingsir * 主线程 * 线程提供了一个静态方法这个方法会将运行这个方法的线程返回:static Thread cur ...
- vue-router精简demo
cnpm install vue-router --save-dev 或者 cnpm install vue-router --save 全局引用VueRouter import VueRouter ...
- 通过程序调用微信公众号发消息api返回48001
自己的订阅号,尝试通过写程序来给用户发消息.结果呢,接口返回报错:errcode=48001,errmsg = api unauthorized hint: [ZlPULa02942276!] 去微信 ...